2009-03-04 2 views

Antwort

4

I wrote a blog post on this a while ago. Kurz gesagt, es erfordert einen grundlegend anderen Ansatz als ORM, wie Hibernate, ECO und die anderen ORMs, die ich angeschaut habe. Sie können denken, dass dieser Ansatz besser, schlechter oder unwichtig ist, aber wenn Sie tief genug schauen, ist es schwer zu bestreiten, dass es anders ist. Aber nimm mein Wort nicht darauf. Wenn Sie wirklich an diesem Thema interessiert sind, empfehle ich dringend, this technical paper und this interview in ACM-Warteschlange zu lesen.

+0

Toller Blogbeitrag übrigens. –

3

Dies ist wahrscheinlich nicht die Antwort, die Sie suchen, aber ich denke nicht, dass Sie es in Ihrem Projekt verwenden sollten. Es ist sehr jung und nicht sehr komplett. Warte, bis die nächste Version herauskommt.

Wenn Sie darauf bestehen, Entity Framework zu verwenden, gibt es ein paar gute Dinge darüber. Ein schöner Weg ist die Möglichkeit, komplexe Mappings auf einfache Weise zu erstellen. Und da es sich um eine Microsoft-Technologie handelt, ist die IDE-Integration natürlich gut.

Aber wie ich schon sagte, ich habe es ausprobiert und ich glaube nicht, dass es für den echten Gebrauch bereit ist.

Auf jeden Fall viel Glück bei Ihrem Projekt

1

Von dem, was ich gelesen habe, hat es eine gute Unterstützung für WCF Remote/binäre Serialisierung, die etwas, das viele ORMs ist nicht sehr gut unterstützt (wenn überhaupt). Es kann sich lohnen, nachzuforschen, ob Sie eine Client/Server/Remoting-App mit ORM auf der Client-Seite erstellen möchten.

+0

Ich denke, Sie denken vielleicht an ADO.NET Data Services, die eine schöne REST-Schnittstelle und WCF-Unterstützung hat. –

+0

Um zu klären, ich spreche über Mapping-Entities mit WCF-Dienste als ihre Quelle. –

+0

Was EF hat, würde ich nicht "gute Unterstützung" nennen ... google: Entity Framework WCF, und Sie werden nur Seite für Seite von Ausgaben finden ... –

1

ADO.NET ist kein ORM.

Grundsätzlich ist der Unterschied das Maß der Abstraktion in jedem einzelnen.

Mit ADO, Abfragen Sie im Grunde die DB und verwenden Sie die Ergebnisse als Objekte, ist wie eine Brücke zwischen dem RDBMS und Ihren Objekten.

Sie modellieren Ihre DB und dann erstellen Sie ein Objekt aus diesem Modell. Deshalb ist es ein Entity Framework (db entities)

ORM sind nicht zum Abfragen oder zur Darstellung von Datenbankeinträgen als Objekte (obwohl sie sowieso alle benutzt werden - ich eingeschlossen -), aber eine Möglichkeit, Ihr Objektmodell in einem relationalen persistent zu halten Datenbank.

Sie sind Object Relational Mapping (nicht Relational Mapping auf Objekt)

Also, Sie wählen eine oder das andere, wenn Sie eine Domain (Objekt) Modell haben, und Sie wollen etwas, das es zu bestehen bleiben (zu einem RDBMS) oder wenn Sie ein Entitätsmodell haben und es als Objekte in Ihrer App verwenden möchten.

0

Einige der besten Talente in der ORM-Welt in .NET scheinen an Projekten wie NHibernate (frei-open-source; ich benutze es) und LLBLGen Pro (kommerziell) zu arbeiten.

NHibernate ist der maßgebliche Standard für unternehmensweites, herstellerübergreifendes ORM.NHibernate ist auch der Standard für eine reine Implementierung von ORM, der es dem Entwickler ermöglicht, Domänenmodelle völlig unabhängig von der NHibernate-Infrastruktur zu schreiben und Code-generierte Klassen vollständig zu eliminieren.

NHibernate kann auf den ersten Blick unheimlich aussehen. Aber es ist eigentlich ziemlich freundlich, wenn man ein bisschen damit arbeitet, und seit Juli läuft die Arbeit, um NHibernate fast konfigurationsfrei zu machen.