In letzter Zeit habe ich nach verfügbaren .NET-ORMs gesucht. Ich habe bemerkt, dass jeder in einem oder zwei Lagern stationiert ist. In einem Lager wird die Datenbank zuerst erstellt, und das ORM bietet eine einfachere Möglichkeit, auf die Datenbank in einer Anwendung zuzugreifen. Im zweiten Lager existiert das Objektmodell zuerst und das ORM erleichtert das Fortbestehen des Objektmodells in einer Datenbank.
Ich frage oder behaupte jetzt nicht, ob ein Lager besser ist als das andere. Ich kann sicherlich Gründe für jede Design-Methodik sehen. Was mich frustriert, ist aus all den Tutorials und den "ersten Schritten", die ich in letzter Zeit gelesen habe. Keine kommen heraus und sagen ganz am Anfang: "Dieses Tool geht davon aus, dass Sie mit einem bestehenden Datenbank- / Objektmodell beginnen". Für mich ist das ziemlich grundlegend, ob Sie ein ORM gegen ein anderes verwenden würden.
Nachdem ich einige Lektüre gemacht und einige "Hello World" -Projekte erstellt habe, habe ich eine Reihe von Aufzählungspunkten zu den Workflows zusammengestellt, die von den ORMs unterstützt werden, die ich untersucht habe. Kann jemand mit Erfahrung mit diesen Tools mir sagen, ob ich falsche Aussagen gemacht habe oder wirklich wichtige Punkte übersehen habe? Insbesondere würde ich gerne wissen, ob meine Annahmen darüber, ob das Datenbankschema oder das Objektmodell mit jedem Werkzeug zuerst kommen sollte, korrekt sind.
Subsonic (einfaches Repository)
repo.Add<MyClass>(instance);
<classname>.hbm.xml
Ausgehend von den Kommentaren, die den Entity Framework hervorgebracht haben:
Entity-Framework (wikipedia hat auch einige gut strukturierte Informationen)
Es gibt auch LLBLGen, die ich nicht benutzt habe, aber aus den Kommentaren eines meiner Kollegen ist es nicht so groß.
Ich habe NHibernate schon früher benutzt, wenn auch nur kurz, und der Eindruck war gut; obwohl es damals noch nicht so ausgereift war wie jetzt, war es immer noch eine sehr gute Bibliothek. Ich bin mir nicht sicher, ob ich jetzt zwischen NH und EF wählen müsste ... Ich denke, ich würde mit EF gehen, weil ich das letzte Jahr oder so gebraucht habe und die Entwicklung würde schneller gehen (für mich alleine), aber Feature -WH kann etwas besser sein.
Ehrlich gesagt kann jedes semi-anständige ORM sowohl mit der ersten Datenbank als auch mit dem ersten Code umgehen.
Alle ORMs, die in Ihrer Frage enthalten sind (einschließlich EF 4 und LLBLGen Pro 3), können beides tun, aber es kann unterschiedliche Schmerzen geben. Code für LinqToSql zum Beispiel zu tun, ist nicht wirklich das, was es tun sollte, aber ich glaube, es gibt Open-Source-Projekte, bei denen dieses Feature "angeschraubt" wurde. Allerdings gibt es im Grunde keinen Grund, LinqToSql zu empfehlen, da Microsoft stattdessen alle zu Entity Framework drängt.
Im Moment hat NHibernate wahrscheinlich die beste erste Geschichte des gesamten Codes. Es ist schwierig, eine Meinung darüber zu ziehen, auf welcher ORM-Datenbank die erste Gesamtgeschichte der Datenbank zu finden ist, da sie alle sehr gut unterstützt werden, und dieser spezielle Anwendungsfall ist nicht das, worauf Sie Ihre Entscheidung stützen sollten.
Wählen Sie ein ORM basierend darauf, ob es ein gutes ORM ist. Die guten ORMs unterstützen sowohl die Datenbank als auch den Code zuerst.
Tags und Links .net linq-to-sql nhibernate subsonic-active-record subsonic-simplerepository