Frage

Ich bin ein neues Windows-Projekt vorbereiten und sich fragen, welche Art von DAL-Technologie zu verwenden. Ursprünglich war ich auf der Suche nach etwas einfacher nicht zu viel Zeit auf den Aufbau es. Aber ich verstehe auch, dass es effizient und skalierbar auf lange Sicht sein.

Ich plane WPF (MVVM) Client und WCF-Dienst auf einem 3 Tier-System zu verwenden.

Just zusammenzufassen alle vorhandenen Technologien Ich bin vertraut mit:

Datasets

PRO: Könnte ein bisschen altmodisch, aber sehr einfach sein, die meisten Teile zu verwenden und lassen Auto für Sie generiert werden. Ein leistungsstarker Aspekt über Datensätze ist die Leichtigkeit des Durchlaufens bezogenen Daten durch die Beziehungen. Auch in einer Art und Weise seine getrennt von der Datenbank und können die Updates vereinfachen, indem der Zeitstempel automatisch zu kümmern. Inklusive Validierung.

CONTRA: Ganz altmodisch. Einige betrachten sie als keine echte Business-Objekte / Modelle, sondern nur ein Spiegel Ihrer SQL-Datentabellen. Weitergabe zwischen WCF-Dienst / Client könnte schwieriger sein als selbst erstellte Geschäftsobjekte.

Enterprise Library 4.1 - Data Access-Block

PRO: Die DAL ist wunderschön in ein Fabrikmuster setzen. Es kümmert sich um Verbindung Öffnen und Schließen automatisch. Sehr einfach für die meisten Teil verwenden. Es unterstützt sowohl Datenmengen und normale SQL Sps Ihre eigenen Business-Objekte zu erstellen. Im Rahmen eines laufenden Rahmen kann es effizienter sein, in Kombination zu verwenden, mit dem Rest der Enterprise Library für ein effizientes Endprodukt.

CONTRA: ??

Linq to SQL

PRO: Auto erstellt die SQL-Tabellen in Geschäftsobjekte. Leicht zu CRUD. Theoretisch eine sehr schöne Art und Weise, es zu tun.

CONTRA: Nachdem mit ihm herumgespielt, als es herauskam, fand ich es schuppig und manchmal instabil. Es ist bereits eine tote Technologie nach Microsoft Ankündigung betrachtet, die Entity Framework 4.0 - als Teil von .NET 4.0 - wird Microsoft Weg empfohlen. Nur wenige Fehlerkorrekturen sind zu in .NET 4.0 zu erwarten, aber nicht mehr Feature Pläne erstrecken.

Entity Framework 4.0

Ich weiß nichts davon, sondern nur, dass es schließlich alles andere als auf .NET 4.0 ersetzen. Ich ist es auch versucht, zu verwenden, aber da seine noch in der Beta, würde nicht ich in der Lage sein, noch diesen Weg zu gehen.

Ich bin sehr versucht Enterprise Library verwenden 4.1 - Data Access-Block und meine eigene Business-Objekte zu erstellen. Der große Nachteil ist, dass es wird mehr Zeit in Anspruch nehmen, die DAL zu erstellen. Es sei denn, jemand kann mir von anstatt mit Datasets durch die Data Access-Block überzeugen.

Was sind Ihre Kommentare und Ideen? Danke vielmals, Kave

War es hilfreich?

Lösung

Sie erwähnen Entity Framework als Teil des „contra“ für die Linq to SQL-Option, aber man sollte es anstelle von Linq to SQL betrachten - es ziemlich die gleiche Funktionalität und mehr bietet. Bei Projekten mit kleineren Datenbanken bietet es auf jeden Fall eine Menge bang for the buck. Es kann eine Herausforderung in EF sein, den Kontext für größere Datenbanken zu verwalten, und Schemaänderungen können die Dinge führen zu brechen, aber diese Herausforderungen gibt es bei jedem Datenzugriff Ansatz.

Der größte con für EntLib, in meinem Kopf, ist, dass Sie immer noch Objekte Ihrer eigenen Daten rollen. Die Enterprise Library nehmen viel von dem Sanitär-Code von einer geraden „old-school“ ADO.NET Implementierung weg, das ist schön, aber es spielt keine Datenobjekte für Sie generiert, die aus der Box für LINQ Abfragen verwendet werden können.

Andere Tipps

Wir prevously verwendet Datensätze mit EntLib 4.1 Daten Application Block.

Wir haben jetzt Entity Framework verwenden. Wir haben eine massive Verbesserung der Produktivität mit Entity Framework achived verglichen mit EntLib 4.1. (Progamm die Datenschicht für 80 Tabellen in 10 Stunden statt 80)

Entity Framework 4 ist noch in der Beta, aber wenn es eine Weile, bis Ihr Projekt geht live ist, würde ich gehen mit EF 4. Sie die Produktivität eines ORM zugleich erhalten die Flexibilität der Verwendung von POCO (Plain Old Clr Objekte)

A. Prüfen Sie auch NHibernate.

B. DataSet -. Die schnellste und einfachste, aber Sie eine Menge Code

Der ganze Rest - es gibt eine Menge gut in ORM-Tools, aber es gibt eine Menge Probleme mit 3-Tiering mit ihnen

.

(verzögertes Laden ist ein Problem zu behandeln, viele großen Objektbäume machen, die Wirkung Leistung, Caching nicht so intelligent wie möglich)

So -. Es hängt davon ab, was Ihre wichtigsten Bedürfnisse ist, und wie viel Zeit wollen Sie studieren EL / LINQ oder NHibernate verbringen, bevor Sie Codierung beginnen, b / c gibt es eine Lernkurve mit dieser Tools

Beste Idee ist, Gelegenheit zu haben, beide Technologien gleichzeitig zu verwenden. Wie kannst du das machen? Es ist sehr einfach mit Repository-Muster. Zunächst müssen Sie generischen IRepository Schnittstelle erstellen. Etwas gefällt das:

public interface IERepository<E>
{
    DbTransaction BeginTransaction();
    void EndTransaction();
    void Add(E entity);
    void Delete(E entity);
    int Save();

    ObjectQuery<E> DoQuery(string entitySetName);
    IList<E> SelectAll(string entitySetName);
    E SelectByKey(int Key);

    bool TrySameValueExist(string fieldName, object fieldValue, string key);
    bool TryEntity(ISpecification<E> selectSpec);

    int GetCount();
    int GetCount(ISpecification<E> selectSpec);
    int AddAndSave(E entity);

}

ziehe ich Entity Framework. Ich habe drei Projekte auf ihr basiert. Es funktioniert sehr schnell, vor allem Abfragen mit Paging. So, nachdem Sie Basis Repository generische Klasse mit virtuellen Methoden benötigen schaffen, was IRepository-Schnittstelle implementieren. Und das ist alles.  Jetzt haben Sie sehr schnell Art und Weise DAL Schreiben einfachen Code wie folgt zu erstellen:

public class MonthRepository:Repository<Month>
{

}

Sie haben die Möglichkeit, alle Methoden der Basisklasse außer Kraft zu setzen und erstellen Sie den Zugriff auf DB gespeicherte Prozedur, wo Sie brauchen. Und Sie können mit tun, ohne Code in anderen Orten zu ändern. Sie wird immer noch die gleiche Art von Entitäten zurück, sondern wird sich auf andere Weise erhalten.

Reade mehr auf http://www.codeproject.com/KB/database/ ImplRepositoryPatternEF.aspx

NHibernate hat die beste Mix von Feature-Set, Reif und Support.

NHibernate, Entity Framework, aktive Aufzeichnungen oder linq2sql

Sie sollten prüfen, Linq eine Priorität für jede Lösung unterstützen Sie betrachten und Ihre ersten beiden oben genannten Optionen unterstützen Linq nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top