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.

4voto

n8wrl Punkte 19091

Anstatt etwas auszuwählen, von dem Sie glauben, dass Sie dafür eingestellt werden könnten, konzentrieren Sie sich auf EF (vielleicht) als konkretes Beispiel für eine Lösung des ORM-Problems als Ganzes. Trotz EF könnte Ihr zukünftiger Arbeitgeber ein nHibernate-Anbieter sein oder eine eigene, selbst entwickelte Lösung haben. Lernen Sie EF, aber nutzen Sie diese Erfahrung, um sich mit ORM vertraut zu machen.

0 Stimmen

Ah ja, ich möchte auf jeden Fall etwas, wo ich die Erfahrung weitergeben kann. Danke!

4voto

JasonTrue Punkte 18756

Ich persönlich denke, NHibernate (plus FluentNHibernate und Linq to NHibernate) lässt mich am meisten Vernunft behalten. In realen Projekten ist die Verwaltung einer einzigen EDMX-Datei für ein großes Datenmodell in Entity Framework in einem großen Team wirklich mühsam. In NHibernate kann man mit Fluent die Dinge auf mehrere C#-Dateien aufteilen, oder das HBM-XML-Format ermöglicht die Verwendung mehrerer XML-Dateien. Das letzte Mal, als ich das Entity Framework verwendet habe, war das nicht einfach, es sei denn, man hatte für jedes Modell einen eigenen DataContext. (Falls sich das in letzter Zeit geändert hat, entschuldige ich mich für meine Unkenntnis). Das Schwierigste an NHibernate wird sich wahrscheinlich in den meisten ORM-Tools auf die eine oder andere Weise bemerkbar machen: Die Abbildung von Objektgraphen auf relationale Modelle ist knifflig. Aber man bekommt eine Menge Kontrolle über Dinge wie Lazy Loading, Parent/Child-Beziehungen und so weiter; das Mapping nach Konvention ist auch ein großer Gewinn, wenn man Fluent verwendet.

Aber Sie werden nicht pleite gehen, wenn Sie sich für das Tool entscheiden, in das Microsoft investiert; viele Unternehmen haben die Verwendung eines ORM nicht einmal ernsthaft in Betracht gezogen, bis das Entity Framework veröffentlicht wurde. Ich persönlich möchte nicht für Unternehmen arbeiten, die Entscheidungen wie diese aufschieben, bis ihr Anbieter eine passable Lösung gefunden hat, aber Tatsache ist, dass viele Unternehmen das Entity Framework verwenden (oder verwenden werden).

Es ist absolut nichts falsch daran, das Entity Framework zu verwenden, obwohl ich vermute, dass, wenn Sie EF in Wut für ein reales Projekt für 4 Wochen und NHibernate in Wut für etwa 4 Wochen, mit mehreren Entwicklern auf das Projekt verwendet, gibt es eine gute Chance, dass Sie NHibernate einfacher finden würde. Meiner Erfahrung nach sieht EF auf den ersten Blick viel einfacher aus, wird aber immer komplizierter, je länger man es benutzt. NHibernate sieht anfangs viel schwieriger aus und fühlt sich auch so an, aber es wird einfacher und offensichtlicher, je länger man es benutzt.

0 Stimmen

Danke. Ich werde mit nHibernate gehen (siehe mein Update in der ursprünglichen Frage). Nur eine kleine Randbemerkung: "Ich möchte eigentlich nicht für Unternehmen arbeiten, die ...". Manchmal hat man keine Wahl, besonders wenn die Wirtschaft schlecht läuft und man 4 Mäuler zu stopfen hat.

1 Stimmen

Einverstanden. Aber ich habe festgestellt, dass ich mit einer vertretbaren Meinung, die durch meine Erfahrung gestützt wird, viel mehr Freiheit an dieser Front habe, als wenn ich während meiner gesamten Laufbahn nur den Werkzeugen eines einzigen Anbieters hinterherlaufen würde (ich habe 7 Jahre lang für MS gearbeitet; ich betrachte mich als meinungsfreudig, aber ignorant). Wenn Sie sich in einem Gebiet mit einigermaßen vielfältigen Optionen befinden und einigermaßen kompetent sind, haben Sie in der Regel immer noch eine Wahl.

0 Stimmen

+1 Ah, das passiert, wenn man mitten im Schreiben eines Beitrags rausgeht (ich denke, wir sind auf derselben Seite, siehe meine zu lange Version desselben). Könnte nicht mehr zustimmen. In meinem Beitrag finden Sie Links zu einigen der hier erwähnten Techniken und Ideen sowie weiterführende Literatur.

2voto

kemiller2002 Punkte 110605

EntityFramework ist das, was Microsoft als seine vorgeschlagene Datenbanktechnologie vorstellt. Es beinhaltet viel von dem, was Linq-to-Sql tut. Ich würde dort zusammen mit ADO.NET anfangen. Sie werden ADO.NET auch häufig antreffen.

Wie der Kommentar schon sagt, wird Linq-to-sql auch nicht mehr weiterentwickelt.

http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx#ado.netenfrmovw_topic2

0 Stimmen

+1. Es ist auch erwähnenswert, dass es scheint, dass Linq-to-SQL in den nächsten Versionen nicht mehr weiterentwickelt wird und nur noch abwärtskompatibel sein wird. EntityFramework wird in .NET 4.0 weiterentwickelt und wird wahrscheinlich auch in den nächsten Versionen weiterentwickelt.

1voto

SethO Punkte 2631

Wenn Sie Entity Framework erkunden möchten, diese Reihe von Pluralsight-Videos von Julie Lerman zeigt viele der Grundlagen, die Sie benötigen, um loszulegen. Wie Kevin erwähnte, legt Microsoft weniger Wert auf LINQ-to-SQL und mehr auf LINQ-to-EF.

0 Stimmen

Dies ist eine wirklich nützliche Information: Wenn MS weniger Zeit für LINQ-to-SQL aufwendet, dann werde ich fast keine Zeit damit verbringen.

0 Stimmen

Ich habe mir gerade die Videos angeschaut, aber die Beispiele verwenden VS 2010. Ich werde nach Videos mit VS 2008 suchen.

0 Stimmen

@RonJ - ja, sie verwenden alle .NET 4.0. Die letzte .NET-Version gab Entity Framework einige dringend benötigte Unterstützung (manche würden sagen "Zähne").

1voto

Srikar Doddi Punkte 15275

NHibernate bietet eine größere Flexibilität bei der Vererbungsabbildung, eine bessere Integration mit gespeicherten Prozessen/Datenbankfunktionen/angepasstem SQL/Triggern, Unterstützung für Formeleigenschaften und es ist einfach eine ausgereiftere Plattform als EF 4.

0 Stimmen

Kann ich das nHibernate-Wissen auf EF übertragen, oder sind sie nicht einmal nahe beieinander?

0 Stimmen

Ja, Sie können Ihr NHibernate-Wissen auf fast jedes andere Framework übertragen. Das liegt daran, dass NH extrem flexibel ist und Ihnen viele Möglichkeiten bietet, ORM-Probleme und -Situationen anzugehen. Wenn ich Junioren NHibernate beibringe, stelle ich fest, dass sie andere ORMs besser nutzen als zuvor.

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