Ich habe ein Szenario, in dem ich ungefähr 7500 Datenbank-Datensätze abrufen muss, wobei jeder Datensatz 6 untergeordnete Entitätslisten hat. Jede dieser untergeordneten Listen kann 0 bis ungefähr 125 Datensätze umfassen.Was ist der effektivste Weg, Tausende von Datensätzen mit Hunderttausenden von Kinddatensätzen in Klassenobjekte zu ziehen?
Meine Klassenstruktur Art sieht aus wie folgt aus:
public class Entity
{
public int ID { get; set;
public string Name { get; set; }
public ICollection<ChildEntity1> Children1 { get; set; }
public ICollection<ChildEntity2> Children2 { get; set; }
public ICollection<ChildEntity3> Children3 { get; set; }
public ICollection<ChildEntity4> Children4 { get; set; }
... 2 more collections
}
Nachdem ich alle Entitäten abzurufen, muss ich über jeden einzelnen zu durchlaufen und einige Berechnungen, rufen einige Web-Services und andere verschiedene Dinge ausführen und letztlich in eine Datei exportieren
Was sind die besten Strategien zum Abrufen dieser Daten von MS Sql Server 2008 mit C# 4? Ist ein DataSet mit DataAdapters der beste Weg? ORM?
Ich möchte aus naheliegenden Gründen weg von ausgewählten N + 1 Szenarien bleiben.
Benötigen Sie alle Entitäten im Speicher zur gleichen Zeit oder können Sie eine Teilmenge von Entitäten abrufen, verarbeiten und in eine Datei schreiben? –
Zum einen sollte Ihre Strategie nicht "alle Entitäten abrufen", gefolgt von "Iteration über alle". Gibt es einen Grund dafür, dass Ihr Algorithmus nicht immer hintereinander arbeiten kann, Zeile für Zeile? –
@ Gilbert- Es wäre möglich, eine Teilmenge, sagen wir 100 zu einer Zeit, zu holen und zu einer Liste hinzuzufügen, um am Ende exportiert zu werden. Die Elterneinheit mit ihren Kindern ist vollständig atomar. –