4 Stimmen

Entity Framework oder etwas anderes?

Ich bin gerade dabei, von C auf C# umzusteigen und würde gerne etwas Zeit investieren, um die Arbeit mit Datenbanken zu lernen. Ich bin überwältigt von den Möglichkeiten: Linq-to-sql, ADO.NET. nHibernate, EntityFramework, plain old sql (ich bin das gewohnt). Da ich nur eine begrenzte Anzahl von Lernstunden zur Verfügung habe (etwa 2,5 Stunden pro Tag), wo sollte ich meine Zeit investieren?

Ich möchte nichts lernen, was nächsten Monat schon wieder veraltet ist oder wofür mich niemand einstellen wird.

Wenn ich EF lerne, wird dieses Wissen dann leicht auf nHibernate übertragbar sein?

Update: Ich habe mich entschieden, mit nHibernate zu beginnen. Während EF 4.0 viele Mängel behoben hat, habe ich nicht VS2010 jetzt und wird es nicht für weitere 1 Jahr haben. Also nHibernate ist der Mann für jetzt.

1voto

Abel Punkte 53946

(Entschuldigung für den langen Beitrag, aber ich habe beschlossen, ein wenig Hintergrundwissen zu zwei der wichtigsten Frameworks zu vermitteln)

Ich möchte noch hinzufügen, dass die Verwendung einer Nicht-Microsoft-Technologie den Vorteil hat, dass man das Problem aus einer größeren Vogelperspektive betrachten kann und sich nicht in den Zyklus .NET + Entity + SQL Server verstrickt (obwohl Entity datenbankunabhängig ist).

Sie könnten NHibernate in Betracht ziehen. Es ist wohl eines der ausgereiftesten Open-Source-ORM-Frameworks auf dem Markt. Es ist schnell und wird von großen und sehr großen Unternehmen eingesetzt. Hier liegt auch seine größte Schwäche: NHibernate hat eine ziemlich steile Lernkurve. Wenn Sie diesen Weg einschlagen, kann ich Ihnen das ausgezeichnete Buch "NHibernate In Action" von Manning empfehlen.

Viele der Schwachstellen von NHibernate wurden von zwei Seiten beseitigt: beste Praxis ORM Unternehmen wurden in der S#arp Architektur ( Downloads auf Github jetzt ), die auch die vollautomatische Kartierung umfasst von der Datenbank zur MVC-Architektur . S#arp Architecture macht komplexe NHibernate-Szenarien zu einem Kinderspiel (hat aber immer noch eine steile Lernkurve).

Auf der anderen Seite ist der einfach zu konfigurierende Teil durch Fließendes NHibernate was eine "Ein-Punkt-Wartung"-Situation schafft: Codieren Sie einfach Ihre Entitätsobjekte in C#, rufen Sie Config und die Datenbank wird erstellt, wenn sie nicht existiert. Das spart verdammt viel Zeit. Fluent macht die Arbeit mit NHibernate wirklich so, wie sie immer hätte sein sollen (und eigentlich auch wie EF hätte sein können).

Beachten Sie, dass Entity Framework, sofern es sich nicht kürzlich geändert hat, Änderungen an der Datenbank für die gespeicherten Prozeduren erfordert, weshalb ich persönlich es nur selten angewendet habe. Außerdem lässt sich EF in Unternehmen nicht allzu gut skalieren, es sei denn, Sie fügen selbst eine Menge Aufwand hinzu. NHibernate glänzt, wenn man eine bestehende Datenbank hat, es für große Unternehmen braucht oder nicht ändern will, was man bereits erstellt hat (inkl. Triggers, SP's, Constraints).

Aus der Perspektive des Lernens: Wie andere bereits gesagt haben, ist das Erlernen von EF ein guter Anfang, es ist ziemlich einfach und es gibt eine umfangreiche Dokumentation. Kleinere Unternehmen verwenden EF eher, weil es so einfach zu bedienen ist. Mittelgroße bis große Unternehmen werden eher NHibernate (und vergleichbare unternehmensorientierte Mapping-Systeme) einsetzen. EF ist relativ neu, NHibernate hat eine lange Geschichte. Beide haben ihre Vorzüge. Beide arbeiten gut mit LINQ zusammen. Beide sind (sehr) gut zu verstehen und finden einen Platz in Ihrem Lebenslauf.

0voto

Hem Talreja Punkte 1

Ich sitze im selben Boot wie Sie. Ich fand die Summer of NHibernate-Reihe sehr nützlich.

http://summerofnhibernate.com/

Danke -Hem

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