2008-08-30 4 views
1

Wie viel sollte ein DataSet darstellen? Am Beispiel eines Bestellsystems: Während ich Ihre Bestellung zeige, zeige ich auch eine Liste von Artikeln, die einer Ihrer ähnlich sind, sowie eine Liste unserer beliebtesten Artikel. Während Ihre Artikel in einem Beziehungsnetz verstrickt sind, in das Sie und Ihre früheren Bestellungen, bevorzugten Lieferanten und die verschiedenen anderen Arten von Informationen zu Ihnen als Kunden einbezogen sind, haben die anderen Artikel nicht dieselben Beziehungen. Die Menge der Abfragen, die ich zum Navigieren durch die Menge von Dingen verwende, die dich repräsentieren, unterscheidet sich von den Abfragen, die ich für eine dieser anderen Objektlisten verwende.Wie viel sollte ein DataSet darstellen?

Meine Neigung ist es, verschiedene DataSets für verschiedene Arten von Beziehungen zu erstellen, aber dann erstelle ich zehn separate Artikel DataTables und das scheint falsch. Wenn ich das größere DataSet instanziiere, obwohl ich nur an einer kleinen Teilmenge interessiert bin, die falsch scheint, und wenn ich versuche, all diese in ein DataSet zu packen, habe ich ein großes, chaotisch aussehendes Ding mit mehreren Items nebeneinander und bin es ziemlich sicher, dass es falsch ist.

Vielleicht überbewerte ich das Beziehungsmerkmal von DataSets oder vielleicht muss ich nur über mich selbst hinwegkommen, auf jede Art und Weise könnte ich etwas Anleitung verwenden.

Antwort

1

Deshalb verwende ich keine Datensätze. Wenn Sie stark typisierte Datasets verwenden, profitieren Sie von der starken Typisierung, aber Sie zahlen dafür, dass es Zeit braucht, um einen zu erstellen, auch wenn Sie nur einen Teil davon verwenden und seine Erweiterbarkeit in Bezug auf die Codebasis. Wenn Sie ein bestehendes modifizieren und eine Zeilendefinition ändern wollen, dann erzeugt dies "shotgun" Brüche in der Codebasis, da jede Definition für das Hinzufügen einer neuen Zeile geändert werden muss, da sie nicht mehr kompiliert wird.

Um das obige Szenario zu vermeiden, ist der vernünftigste Ansatz, generell auf sinnvolle Wiederverwendung zu verzichten. Definieren Sie einen Datensatz pro Zweck und pro Verwendung. Das Hauptproblem bei der API-Verwendung ist jedoch, dass Sie ein Dataset erhalten, das mit einem anderen Dataset vergleichbar ist. Da es sich jedoch um einen anderen Dataset-Typ handelt, müssen Sie es transformieren, um die gemeinsame API zu verwenden, die sowohl schmerzhaft als auch unelegant ist.

Dies und die Tatsache, dass stark typisierte Datasets Ihren Code entsetzlich aussehen lassen (die Länge der Typdeklarationen), sind ziemlich genau die Gründe, die ich in Datasets aufgegeben habe und stattdessen zu Geschäftsobjekten gewechselt habe.

4

Das DataSet wird stark überbewertet und überstrapaziert. Verwenden Sie stark typisierte Sammlungen (Danke, Generika und automatische Eigenschaften!). Als Sahnehäubchen können Sie jetzt mit LINQ sogar coole Suchanfragen gegen Ihre benutzerdefinierten Objekte ausführen.

Gut Esposito Artikel auf Datensätze im Vergleich zu benutzerdefinierten Objekte:

http://msdn.microsoft.com/en-us/magazine/cc163751.aspx

Automatische Eigenschaften:

http://weblogs.asp.net/dwahlin/archive/2007/12/04/c-3-0-features-automatic-properties.aspx

LINQ mit Ihren Objekten:

http://blogs.msdn.com/wriju/archive/2006/09/16/linq-custom-object-query.aspx

Verwandte Themen