Loading a hierarchy with one hit to a database using Linq












2















We have a table structure like an order table with an order lines table and we define a hierarchy of items in the table according to the user requirements by storing a string made up of a comma separated list of record id’s at each level. This allows the user to “re-order” their lines as needed.



e.g.



A Hierarchy string on the order could be something like “3,2,4” meaning that its top level children are lines 3,2,4 (in that order).
The first order line might have its own hierarchy string such as “5,6” indicating that it has nested children that should appear below it.



We want to return this data structure as a flat list of objects in order with a marker of how “deep” it is in the hierarchy. For example if the data looks like this:



Header:
enter image description here
Lines:
enter image description here



We want a flat list like this (in this order):



{Line1Object}, 1
{Line3Object}, 2
{Line2Object}, 2
{Line4Object}, 2
{Line5Object}, 3
{Line6Object}, 3


Can this be done in one hit with some kind of joining process in Entity Framework instead of looping through our records and building this up as we go or are we being too ambitious?










share|improve this question

























  • Not an answer to the question but there's some good background reading on this conceptual question. stackoverflow.com/questions/192220/…

    – Mordy
    Nov 20 '18 at 16:48
















2















We have a table structure like an order table with an order lines table and we define a hierarchy of items in the table according to the user requirements by storing a string made up of a comma separated list of record id’s at each level. This allows the user to “re-order” their lines as needed.



e.g.



A Hierarchy string on the order could be something like “3,2,4” meaning that its top level children are lines 3,2,4 (in that order).
The first order line might have its own hierarchy string such as “5,6” indicating that it has nested children that should appear below it.



We want to return this data structure as a flat list of objects in order with a marker of how “deep” it is in the hierarchy. For example if the data looks like this:



Header:
enter image description here
Lines:
enter image description here



We want a flat list like this (in this order):



{Line1Object}, 1
{Line3Object}, 2
{Line2Object}, 2
{Line4Object}, 2
{Line5Object}, 3
{Line6Object}, 3


Can this be done in one hit with some kind of joining process in Entity Framework instead of looping through our records and building this up as we go or are we being too ambitious?










share|improve this question

























  • Not an answer to the question but there's some good background reading on this conceptual question. stackoverflow.com/questions/192220/…

    – Mordy
    Nov 20 '18 at 16:48














2












2








2


1






We have a table structure like an order table with an order lines table and we define a hierarchy of items in the table according to the user requirements by storing a string made up of a comma separated list of record id’s at each level. This allows the user to “re-order” their lines as needed.



e.g.



A Hierarchy string on the order could be something like “3,2,4” meaning that its top level children are lines 3,2,4 (in that order).
The first order line might have its own hierarchy string such as “5,6” indicating that it has nested children that should appear below it.



We want to return this data structure as a flat list of objects in order with a marker of how “deep” it is in the hierarchy. For example if the data looks like this:



Header:
enter image description here
Lines:
enter image description here



We want a flat list like this (in this order):



{Line1Object}, 1
{Line3Object}, 2
{Line2Object}, 2
{Line4Object}, 2
{Line5Object}, 3
{Line6Object}, 3


Can this be done in one hit with some kind of joining process in Entity Framework instead of looping through our records and building this up as we go or are we being too ambitious?










share|improve this question
















We have a table structure like an order table with an order lines table and we define a hierarchy of items in the table according to the user requirements by storing a string made up of a comma separated list of record id’s at each level. This allows the user to “re-order” their lines as needed.



e.g.



A Hierarchy string on the order could be something like “3,2,4” meaning that its top level children are lines 3,2,4 (in that order).
The first order line might have its own hierarchy string such as “5,6” indicating that it has nested children that should appear below it.



We want to return this data structure as a flat list of objects in order with a marker of how “deep” it is in the hierarchy. For example if the data looks like this:



Header:
enter image description here
Lines:
enter image description here



We want a flat list like this (in this order):



{Line1Object}, 1
{Line3Object}, 2
{Line2Object}, 2
{Line4Object}, 2
{Line5Object}, 3
{Line6Object}, 3


Can this be done in one hit with some kind of joining process in Entity Framework instead of looping through our records and building this up as we go or are we being too ambitious?







c# sql postgresql linq






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 9 '18 at 0:44









Hambone

9,57752746




9,57752746










asked Nov 20 '18 at 16:43









RaheemRaheem

111




111













  • Not an answer to the question but there's some good background reading on this conceptual question. stackoverflow.com/questions/192220/…

    – Mordy
    Nov 20 '18 at 16:48



















  • Not an answer to the question but there's some good background reading on this conceptual question. stackoverflow.com/questions/192220/…

    – Mordy
    Nov 20 '18 at 16:48

















Not an answer to the question but there's some good background reading on this conceptual question. stackoverflow.com/questions/192220/…

– Mordy
Nov 20 '18 at 16:48





Not an answer to the question but there's some good background reading on this conceptual question. stackoverflow.com/questions/192220/…

– Mordy
Nov 20 '18 at 16:48












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53397654%2floading-a-hierarchy-with-one-hit-to-a-database-using-linq%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53397654%2floading-a-hierarchy-with-one-hit-to-a-database-using-linq%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

"Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

Alcedinidae

Origin of the phrase “under your belt”?