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.
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.
0 Stimmen
Ein Framework sollte alles bieten, was man braucht, um das zu TUN, was das Framework behauptet, dass man damit tun kann. EF tut das nicht. @J. Steen, in welchem Thread war das? Ich werde Sie hochstimmen, um zu kontern!
0 Stimmen
Ich denke, ich müsste falsche Behauptungen ehrlich sehen. Ich habe viele Artikel darüber gelesen, was die Leute sich davon versprochen haben, aber selten habe ich das Kleingedruckte gesehen. Rahmenwerke sind Anhaltspunkte und Bausteine, keine Komplettlösungen. Das mag ein semantisches Argument sein, denn Ihr Begriff von Rahmenwerk mag sich von meinem unterscheiden.