Ist Entity Framework produktionsbereit? [geschlossen]

10

Ich suche in Entity Framework nach einem neuen Projekt, das ich übernehmen werde, und frage im Rahmen meiner Forschung einige Branchenfachleute, ob es stabil und bereit für die Implementierung in der realen Welt ist.

Im Rennen ist:

  • EF
  • NHibernate
  • DevExpress XPO

Ich habe bereits viel Erfahrung mit XPO, bin aber nicht besonders zufrieden damit.

Steven Evers
quelle

Antworten:

8

Ja, aber mit einigen Einschränkungen:

  • Es wird vollständig von Microsoft unterstützt und hat eine wachsende Community - aber da es neuer als sein engster Konkurrent, nHibernate, ist, hat es noch keine so ausgereifte Community.

  • Neben einer weniger ausgereiften Community wird es Zeiten geben, in denen eine Funktion mit EF4 verfügbar, aber kaum dokumentiert ist. oder EF4 löst Ausnahmen aus, bei denen Google Ihnen nicht helfen kann.

  • Es ist voll funktionsfähig, wenn es wie von Microsoft beabsichtigt verwendet wird, aber meiner Erfahrung nach kann es ziemlich schwierig sein, es in ein vorhandenes System nachzurüsten. Idealerweise verwenden Sie es in einem Greenfield-Szenario mit einem 100% igen Microsoft-Stack. Es ist sicherlich flexibel genug, um sich mit anderen Systemen zu vermischen, aber dies erhöht die Schwierigkeit erheblich.

Um den Hauptpunkt noch einmal zu wiederholen: Es ist vollständig und stabil genug für den Einsatz in der Produktion.


Eine wichtige Sache, die offensichtlich erscheint, aber oft übersehen wird, bis sie Schmerzen verursacht, ist, dass ein ORM vom relationalen Paradigma zum OO-Paradigma abbildet. Wenn eine dieser Ebenen nicht den Regeln des jeweiligen Paradigmas entspricht, fühlen Sie sich besonders verletzt.

Dies kann in beide Richtungen gehen - wenn Sie mit dem relationalen / satzbasierten Paradigma von SQL und OOP vertraut sind, lässt das ORM die beiden sich wie Butter vermischen. Wenn Ihre Datenbank so aussieht, als ob sie OO sein möchte, und Ihr OO-Code so aussieht, als ob sie auf Datensätzen basieren möchte, dann YMMV.

STW
quelle
+1: Danke für die Info. Glücklicherweise befindet sich das Projekt fast ausschließlich auf der grünen Wiese im .NET-Stack (es wird immer noch zwischen MySQL und SQL Server diskutiert), und ich werde zuerst die Domäne modellieren (und hoffentlich die Tabellenstruktur generieren)
Steven Evers
@SnOrfus: FWIW Ich habe vor kurzem angefangen, EF zusätzlich zu MySQL zu verwenden, und es macht mir wirklich Spaß.
Eric King
5

Wir haben EF in mehreren Produktionsanwendungen eingesetzt. Wir haben NHibernate auch in mehreren Produktions-Apps. Der Kommentar von STW, dass EF am besten funktioniert, "wenn es von Microsoft beabsichtigt wird", ist sicherlich wahr. Es gilt auch für NHibernate, dass es am besten funktioniert, wenn es nach den vom NHibernate-Team beabsichtigten Mustern verwendet wird. Ich habe keine Kenntnisse oder Erfahrungen mit XPO.

Ich bereue es nicht, NHibernate in Produktion genommen zu haben.
Ich bereue es nicht, Entity Framework in Produktion genommen zu haben.

Einer der treibenden Faktoren für die Verwendung von EF war die Integration in LINQ. Ich weiß, dass NHibernate auch viel mit LINQ gearbeitet hat, aber noch keine Zeit hatte, dies zu untersuchen.

Jim Reineri
quelle
Die Arbeit mit beiden ist eine großartige Möglichkeit, um zu lernen, wie man mit beiden arbeitet. Es ist ein bisschen wie das Erlernen von VB.NET und C # - Sie stellen Fragen, wenn Sie Unterschiede feststellen, und das Stellen dieser Fragen verbessert Ihr Verständnis am Ende erheblich.
STW
3

Wir verwenden EF4.1 mit dem Code First-Ansatz für unser Webprojekt. Wie bereits erwähnt, werden Sie durch die Beibehaltung der von Microsoft beabsichtigten Verwendung viele Probleme vermeiden.

Man kann jedoch feststellen, dass das System noch nicht wirklich ausgereift ist und ich sage dies, weil:

  1. Das Verhalten ändert sich immer noch stark (im Vergleich von CTP5 zu 4.1).
  2. Der Generator LINQ to Entities kann nur grundlegende Typen (Int, String, das Los) verarbeiten.
  3. Einige Dinge funktionierten nicht ganz intuitiv, wenn Sie versuchen, vorhandene Datensätze zusammenzuführen
    1. Sie können nicht nur Tabellendefinitionen für bestimmte DBSets erstellen
    2. Das Zuordnen von Feldern wie Datums- und Uhrzeitangaben erfordert Googeln.
  4. Siehe andere bekannte Probleme
Alessandro Vermeulen
quelle
2

Ich habe nicht den vollen Stapel verwendet, aber wir verwenden ihn stückweise in unserem Produkt und es scheint ziemlich ausgereift zu sein, obwohl wir einige Teile an unsere Bedürfnisse anpassen mussten.

Matiash
quelle
0

Ich würde es mir denken. Ich verwende EF4 Code-First (CTP) zum Entwickeln einer mandantenfähigen Webanwendung.

Jakub Konecki
quelle
+1 - Ja, ich habe in einem Team trainiert, das es in einem sehr großen Unternehmensprojekt intensiv genutzt hat, und es hat ziemlich gut funktioniert. Das war mit der ersten Version, nicht mit der neuesten. Ich bin mir also sicher, dass die Verwendung der neuesten Version 100% sicher ist.
Ich weiß nicht, wie Sie 100% sicher sein können, welche Software Sie nicht in einer Produktionsumgebung ausgeführt haben.
Jeremy
-1

Ich denke / hoffe es ... Ich starte ein Projekt mit EF 4 und dem neuen Model-First-Ansatz ...

Für das, was ich gesehen habe, ist EF 4 sehr robust und verfügt über ein vollständiges Feature der ersten Version ... Ich würde sagen, mach mit, ich weiß, ich gehe :)

Sebagomez
quelle
-1

Ja, Sie sollten jedoch Ressourcen für die Aktualisierung und den erneuten Test Ihrer Anwendung zuweisen, wenn Aktualisierungen veröffentlicht werden (wie bei jedem anderen Framework).

Kasper
quelle