Ist es besser, Modellklassen zu erstellen oder Stick mit generischer Datenbank-Utility-Klasse?

stimmen
5

Wir haben eine einfache Utility-Klasse im Haus für unsere Datenbank Anrufe (ein Licht Wrapper um ADO.NET), aber ich denke an Klassen für jede Datenbank / Objekt erstellen. Wäre es intelligente Sache, dies zu tun, oder würde es nur profitieren, wenn wir den vollen MVC-Framework für ASP.NET verwendet wurden?

So haben wir diese:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);

Denken, dies zu tun:

Person p = Person.get(id);
p.fname = jon;
p.lname = smith;
p.Save();

oder für einen neuen Datensatz -

Person p = new Person();
p.fname = Jon;
p.lname = Smith;
p.Save();
p.Delete();

Wäre dies smart, oder wäre es zu viel des Guten? Ich kann den Nutzen für die Wiederverwendung, das Ändern Datenbank und Wartung / Lesbarkeit.

Veröffentlicht am 05/08/2008 um 21:10
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
8

Diese Frage wird geladen, Daten Design vs Domain Driven Design angetrieben. Für jede Anwendung, die eine gute Menge an Verhalten hat, dann Domäne Driven Design bevorzugt werden soll. Berichterstattung, oder Utility-Anwendungen sind in der Regel besser arbeiten (oder sind schneller zu entwickeln) mit Daten Driven Design.

Was Sie fragen , ist „sollte mein Unternehmen einen grundlegenden Wandel machen, wie wir unseren Code entwerfen“. Als Domain-Freak, ist meine Reaktion Gut zu schreien ja . Jedoch durch die einfache Art Ihrer Frage, ich bin nicht sicher , dass Sie voll und ganz den Umfang der Veränderung verstehen Sie vorschlagen. Ich denke , Sie sollten mehr für Ihr Team darüber reden.

Holen Sie sich einige Literatur, wie Evan DDD Buch oder den freien Grundlagen E - Book , und dann werden Sie in einer besseren Position, um zu beurteilen , in welche Richtung Sie gehen sollten.

Beantwortet am 05/08/2008 um 21:28
quelle vom benutzer

stimmen
2

Der Ansatz, den Sie diskutieren ist ein gutes von vielen Volks betrachtet, mich eingeschlossen! diesen Ansatz Lernen wird einige Anstrengungen erfordern, aber lassen Sie sich davon nicht abschrecken!

Was ist nur ein Versuch , kleines Projekt mit LINQ to SQL ? Vielleicht ein finden schönes Referenzprojekt auf Google Code , und untersucht , wie andere mit ihm gearbeitet haben.

Es ist ein einfaches Werkzeug, und lassen Sie mit einigen der Themen vertraut zu machen, die mit Mapping-Objekten zu Datenbanken kommen.

Sie werden dann in der Lage sein , um ein Gefühl dafür zu bekommen , und entscheiden , ob es die Lernkurve wert ist.

Es wird neue Konzepte zu begreifen und zu experimentieren mit, Dinge wie:

  • Unit of Work : Wenn Sie auf Speichern ausführen und etc löschen, neigt ein ORM dies nicht sofort zu tun, während ein Cord - basierte DAL Willen. Dies kann überraschend sein , so dass Sie ein wenig über das lernen müssen. Lesen Sie auf der nach oben Einheit des Arbeitsmusters , um ein Verständnis dafür zu bekommen.
  • Massenvorgänge sind ein Problem mit OR / M. Ein Datenleser kann durch Tausende von Zeilen effizient durchlaufen, aber mit einem ORM muss man vorsichtig sein , wenn sie mit großen Chargen von Objekten arbeitet. Wieder eine auf zu lesen.
  • Verbände scheinen groß , wenn kann wie Dinge zu tun , customer.Orders.Countaber sie sind auch die Ursache für viele Probleme. Sie müssen einige sichere Praktiken finden zu folgen , wenn sie mit Verbänden.

...um ein paar zu nennen.

Für den Anfang, keine Sorge über die Vererbung und Sachen, nur einfach starten und haben eine einfache Einheiten, die auf Tabellen abzubilden.

Versuchen Sie, sie auf die gleiche Weise verwenden Sie Ihre vorhandenen DAL verwenden würde. Dann starten Sie mit den Verbänden zu experimentieren.

Dann versuchen Sie vielleicht mehr Verhalten in Ihren Entitäten setzen. Wenn Sie diese beginnen zu mögen, und das Gefühl , dass Sie mehr Funktionen benötigen, sollten Sie eine funktionsreichere ORM wie der Versuch , aus Light oder NHibernate .

Hoffe das hilft!

Beantwortet am 03/10/2008 um 11:07
quelle vom benutzer

stimmen
2

Keineswegs ist MVC das einzige Design-Muster für das Web, aber es ist ein nützlicher.

Die Annahme nur die ‚M‘ werden die Dividenden zahlen, meiner Meinung nach, auch wenn Sie nicht / das ‚V‘ nicht übernehmen oder ‚C‘.

Beantwortet am 05/08/2008 um 21:13
quelle vom benutzer

stimmen
0

Für mich sieht es aus wie Sie versuchen , was LINQ zu tun für Sie bereits tun. Wenn Sie in einem älteren Rahmen stecken , in denen Sie verwenden können nicht, könnte ich vorschlagen , dass Sie Subconic verwenden ( http://subsonicproject.com/ ) anstatt manuell zu müssen , alle diese Modellobjekte von Hand erstellen.

Ich hatte ein Projekt, wo ich in einer ähnlichen Zwangslage war und verändert zur Hälfte mit fantastischen Ergebnissen Subsonic. Schnelleres Entwicklung und viel einfacher zu lesen / verwenden Code.

Beantwortet am 26/09/2008 um 15:41
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more