2 Stimmen

Würden Sie v3.5 des ADO.NET Entity Framework verwenden oder auf v4.0 warten?

Ich war überrascht, als ich ein öffentliches Schreiben fand, in dem ein Misstrauensvotum gegen den Rechtsrahmen vorgeschlagen wurde (siehe http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/ )

Würden die in dem Schreiben genannten Gründe Sie davon abhalten, die aktuelle Version des Entity Frameworks zu verwenden? Würden Sie lieber auf v4.0 warten? Oder lieber ein anderes ORM verwenden?

1 Stimmen

+1 Gute Frage, Willem, ich habe mich mit EF v1 zurückgehalten, um zu sehen, ob sie es in v2 auflösen.

0 Stimmen

Ich bin sogar für die Aussage, dass EF v1 ein unvollständiges Framework ist, heruntergestuft worden =D

0 Stimmen

Nun, um ehrlich zu sein, ist es genau das, ein Rahmen. Normalerweise wird das Wort verwendet, um das grundlegende Fundament zu beschreiben, auf dem man etwas aufbauen kann. Ich denke, wenn man es so betrachtet, ist es wirklich nicht schlecht oder unvollständig. Nachdem ich es viel benutzt habe, wäre es natürlich schön, wenn es so gut wie NHibernate wäre, aber es ist nun einmal ein Framework. Ein Anfangspunkt.

4voto

marc_s Punkte 701497

Die aktuelle Version von EF ist definitiv nicht perfekt und hat eine Menge Probleme und Nachteile. Ich würde sie wahrscheinlich nicht sofort verwenden - aber der Upgrade-Pfad zu EF v2 (oder ist es EF4?) sieht wirklich ziemlich rosig aus!

  • völlige Unkenntnis der Persistenz - Sie können Ihre einfachen POCO-Klassen verwenden
  • zeitversetztes Laden als Option konfigurierbar
  • stark verbesserter Designer mit Unterstützung für Pluralisierung/Singularisierung (auch in mehreren Sprachen!)
  • die Fähigkeit, "Domain First"-Entwürfe zu erstellen und Datenbanken aus Ihrem Modell zu erzeugen
  • die Möglichkeit der Selbstverfolgung von Entitäten über mehrere Ebenen hinweg, die es ermöglicht, Daten an den Client zu senden und Änderungen zurückzuerhalten und diese auf den Entitätskontext anzuwenden

Alles in allem sieht EF v2 sehr vielversprechend aus und ich bin sehr gespannt darauf, es auszuprobieren. Wenn es wirklich alles hält, was es verspricht, dann ist es definitiv ein Gewinner!

Sehen Sie sich die ADO.NET-Team-Blog für eine Reihe aktueller Blogbeiträge zu EF v2.

Marc

3voto

penderi Punkte 8233

Ein weiteres ORM.

Verstehen Sie mich nicht falsch, Sie sollten mit Antworten überschüttet werden, aber derzeit ist nur nHibernate funktional vollständig.

Ich bin ein TDD-Fan und möchte daher eine leicht testbare POCO ORM-Lösung. Wenn das Ihr Ding ist, dann ist EF3.5 out. EF4.0 führt es gerade ein ( http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx ), aber es hat immer noch mindestens 1 großen Nachteil -> unterstützt keine Vererbung.

NHibernate ist vollständiger, aber EF könnte einfacher zu benutzen sein. Wie immer, das beste Werkzeug für den Job ... aber wenn es ein Enterprise-Skala TDD entwickelt app, gehen nHibernate.

Außerdem -> gibt es einen Profiler, der die Entwicklung von nHibernate erheblich erleichtert -> http://www.nhprof.com/

3voto

CodeRedick Punkte 7212

Ich habe versucht, es für mein aktuelles Projekt zu verwenden, bei dem es im Wesentlichen darum geht, unser derzeitiges Durcheinander einer Datenschicht neu zu schreiben.

Es funktioniert einfach nicht.

Erstens, wenn Sie versuchen, eine Entität aus einer Ansicht zu gründen, versucht der Designer, jede NOT NULL-Eigenschaft zu erzwingen, ein Entitätsschlüssel zu sein... was so gut wie nie das ist, was ich wollte. Um das zu umgehen, müssen Sie die Xml an mindestens zwei Stellen zu bearbeiten, und tun Sie es jedes Mal, wenn Sie ein Objekt hinzufügen, weil es aktualisiert und fügt die EntityKey-Eigenschaften neu. Muss die Zuordnung für alle Schlüsseleigenschaften in Entity Framework angegeben werden?

Zweitens, wenn Sie Assoziationen erstellen, MÜSSEN Sie jeden Entitätsschlüssel verwenden - Wie kann man eine Assoziation herstellen, ohne alle Entitätsschlüssel im Entity Framework zu verwenden?

Diese beiden Dinge hielten mich 3 Tage lang auf, dann ging ich zurück zu Linq to SQL und hatte es in ein paar Stunden erledigt. (Na ja, zumindest der Teil des Systems, mit dem ich zu kämpfen hatte...) Ich weiß nicht, ob das zum Misstrauensvotum gehört, aber meiner Meinung nach ist es einfach noch nicht fertig.

Auch mit dem Mangel an Antworten, die ich hier auf jede EF-Frage, die ich gestellt habe, bekommen habe, muss ich annehmen, dass die aktuelle Nutzung so gering ist, dass es schwierig ist, Hilfe und Unterstützung zu bekommen... was möglicherweise der GRÖSSTE Grund ist, etwas nicht zu benutzen.

Hoffen wir, dass die nächste Version besser ist...

EDIT: Unser derzeitiger Plan ist es, bei Linq 2 SQL zu bleiben (ich muss bis Freitag ein Projekt abschließen) und dann alle anderen ORMs zu bewerten, um zu sehen, ob etwas anderes besser ist. Der andere Entwickler hasst L2S, aber ich hatte noch nie größere Probleme damit...

2voto

marr75 Punkte 5638

EF bietet eine umfangreiche Unterstützung für die Entwurfszeit, aber ich muss zustimmen, dass nHibernate trotz der Lernkurve der richtige Weg ist. Wenn Sie etwas schnell machen müssen und sich nicht um TDD oder Serialisierung kümmern (was eine große Schwäche aller ORM-Angebote von MS ist), wählen Sie EF.

0voto

WeNeedAnswers Punkte 4496

Nun, meine Erfahrungen mit Version 1 waren interessant. Ich wollte POCOs verwenden, aber es wurde nicht unterstützt. Nachdem ich herumgelesen hatte, stieß ich auf einen Code von einem Mitarbeiter von Microsoft, der dies tat.

Die Generierung des Codes war ein wenig chaotisch, aber im Großen und Ganzen war dieser Teil des Prozesses nicht so schlimm.

Ein wirklich unangenehmer Punkt, auf den ich gestoßen bin, war das Fehlen einer eingebauten Gleichzeitigkeitsprüfung für die N-Tier-Entwicklung. Sie müssen dies selbst verwalten, was, nachdem ich mir das Problem angesehen habe, gar nicht so schlecht war, vor allem, wenn Sie die Versionskontrolle für Benutzereingriffe an den Client zurückgeben möchten.

Die zweite unangenehme und absolut dumme Sache, die fehlte, war das IN-Schlüsselwort für LINQ-Abfragen. Es wird nicht unterstützt und muss daher umgangen werden. Ich habe eine Lösung gefunden, aber es war ein echtes Chaos, einen anderen Code einzubringen, der die Auslassungen schnell behoben hat.

Würde ich EF 4.0 (2.0) verwenden. Ja, absolut, warum nicht? In der Tat werde ich dies auf Stufe 2 verwenden. Es sieht so aus, als ob es POCOs unterstützt, es sieht so aus, als ob mein Gleichzeitigkeitsmodell ohne Probleme übernommen werden kann (im Grunde genommen Delta-Kopien). Bis jetzt ist alles gut, und ich hoffe, dass die großen Jungs bei Microsoft dieses Mal die Fehler ihres Weges eingesehen haben und eine funktionierende Lösung anbieten.

Wenn Sie sich für die Entwicklung von Entitäten und das gesamte Konzeptmodell entscheiden, dann ist dies die einzige Möglichkeit, eine vollständige Microsoft-Lösung zu erhalten. Obwohl das, was mit der M-Sprache gemacht wird, die Idee in den Schatten stellen könnte und die ganze Modellierungssache zurück in die Datenbank verlagert.

Wenn Sie nicht in die Entität Zeug kaufen dann würde ich stark gehen Enterprise Library. Es ist eine bewährte Technologie, die jedes Mal auf einer soliden Codebasis und einem datenbankzentrierten Paradigma aufbaut. Ich würde auch diesen Weg gehen, wenn Sie denken, dass Stored Procedures die Bienenknie sind und mögen, was sie an den Tisch bringen.

Wenn Sie sich wirklich exotisch fühlen und ein bisschen verspielt sind, würde ich einen NO-SQL-Ansatz wie CouchDB wählen. Daran muss man sich allerdings erst einmal gewöhnen. Es ist verdammt seltsam und fühlt sich wirklich falsch an. Aber die Dinge lassen sich in kürzester Zeit entwickeln und die Lösungen scheinen robust und schneller als erwartet zu sein. Ich würde mich nicht für diese Art von Lösung entscheiden, wenn man auf Normalisierung steht und glaubt, dass sie auf einen NO-SQL-Ansatz angewendet werden kann. Das gesamte Modell muss auf den Kopf gestellt werden, und die Anwendung muss auf eine Weise modelliert werden, die von der eingesetzten Technologie bestimmt wird.

Ich finde den CouchDB-Weg ein bisschen schmutzig und sehr, sehr falsch. Aber es gibt so viele zwingende Gründe, es zu benutzen, dass ich denke, dass es in die Psyche jedes Programmierers einsickern wird und in den nächsten Jahren definitiv Mainstream werden wird.

Mein größter Kritikpunkt an der ganzen Entity-Sache ist allerdings, dass auch in der neuen Version 4 nicht wirklich viel über N-Tier-Umgebungen nachgedacht wurde. Es fühlt sich immer noch so an, als wäre es eine 2-Tier-Lösung, bei der der Endbenutzer (Entwickler) immer noch eine Menge Kesselstein-Code machen muss, damit es in einer robusten und zuverlässigen N-Tier-Umgebung funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X