___ answer3726214 ___
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.
___ qstnhdr ___ ORM-Vergleich: Was kommt zuerst an die Datenbank oder die Klassen?
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden.
___ tag123linqtosql ___ LINQ to SQL ist eine Komponente von .NET Framework Version 3.5, die eine Laufzeitinfrastruktur für die Verwaltung relationaler Daten als Objekte in Microsoft SQL Server bereitstellt.
___ answer3737597 ___
Ich bewerte auch einige ORM-Tools. Ich habe einige Blogs über meine Erfahrungen geschrieben. Vielleicht hilft es dir
Ссылка
Ссылка
Ссылка
___ tag123nhibernate ___ NHibernate ist ein ausgereifter Open-Source-Objektrelational-Mapper (ORM) für das .NET-Framework.
___ tag123subsonicactiverecord ___ hilf uns dieses Wiki zu bearbeiten
___ answer3722262 ___
Ausgehend von den Kommentaren, die den Entity Framework hervorgebracht haben:
Entity-Framework (wikipedia hat auch einige gut strukturierte Informationen)
- unterstützt beide Codes zuerst, zuerst das Modell und dann die erste Entwicklung der Datenbank. Der Unterschied zwischen Code zuerst und Modell zuerst besteht darin, dass Sie zuerst im Code zuerst die Entitätsklassen schreiben, während Sie im Modell zunächst das Datenmodell entwerfen und danach Entitäten generiert werden.
- basiert auf einem Metadatenmodell (EDMX) (obwohl es im Code wohl zuerst fehlt), das auch Zuordnungen definiert; EDMX ist ein XML-Modell, das die Datenbankstruktur, die Entitätsstrukturen und die Zuordnungen zwischen ihnen enthält und von einem in Visual Studio integrierten Designer unterstützt wird. In Code-zuerst werden Zuordnungen in Code und nicht in EDMX definiert.
- unterstützt mehrere Datenbanktechnologien (ich habe MySql und Oracle verwendet).
- basierend auf der Generierung von T4-Code (in v4), die neben interessanten Erweiterbarkeitsszenarien auch Folgendes generieren kann:
- Entities, die von einer Basisklasse abgeleitet sind, die für Entity Framework (EntityObject)
spezifisch ist
- POCO-Entitäten, die überhaupt nicht vom Entity Framework abhängig sind
- Self-Tracking-Entitäten.
- funktioniert gut mit RIA-Diensten (Silverlight).
- unterstützt so ziemlich alle Beziehungstypen, die ich denke, und Vererbung mit mehreren Strategien (obwohl es bei einigen von ihnen einige Probleme geben kann).
- sehr gute Unterstützung für Linq (Linq to Entities).
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.
___ tag123subsonicsimpreepository ___ hilf uns dieses Wiki zu bearbeiten
___ qstntxt ___
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.
Linq zu SQL
- Die Datenbank sollte zuerst existieren
- Funktioniert nur mit SQL Server
- DataContext-Klasse wird zum Lesen / Schreiben zwischen Klassen und Datenbank
verwendet
- DataContext kann reale physikalische Klassen zurückgeben, oder dynamische Typen können verwendet werden, um Typen basierend auf dem Datenbankschema automatisch zu erstellen.
- Die Mapping-Standardnamen werden standardmäßig auf Klassennamen und die Eigenschaftsnamen auf Spaltennamen
umgestellt
- Die Zuordnung kann durch Attribute angepasst werden, die in jeder Klasse eingebettet sind
Subsonic (aktiver Datensatz)
- Die Datenbank sollte zuerst erstellt werden
- Funktioniert mit einer Reihe von Datenbank-Technologien
- Klassen werden automatisch aus dem vorhandenen Datenbankschema mithilfe von T4-Vorlagen generiert
- Die Verbindung zur Datenbank ist vollständig transparent, sobald Klassen generiert werden
- Aufruf von Klassenkonstruktoren, die automatisch Datensätze in der Datenbank erstellen
- Beim Ändern der Eigenschaftswerte wird die Datenbank automatisch aktualisiert.
Subsonic (einfaches Repository)
- Klassenstruktur sollte an erster Stelle stehen
- Funktioniert mit einer Reihe von Datenbank-Technologien
- Die Repository-Klasse wird erstellt und mit einer Datenbank verbunden
- Das Datenbankschema wird automatisch erstellt und aktualisiert, wenn Klassen dem Repository hinzugefügt werden
- %code%
- Das Repository verwendet Reflektion zum Erstellen / Aktualisieren des Datenbankschemas
- Erstellen Sie für jede Zeit eine Tabelle und für jede Eigenschaft eine Spalte
NHibernate
- Entweder Datenbank oder Klassenstruktur kann zuerst erstellt werden
- Funktioniert mit einer Reihe von Datenbank-Technologien
- Klassen in der Endmontage werden mit den Einstellungen für die NHibernate-Zuordnung verknüpft, die Klassen und Eigenschaften den Tabellen und Spalten
zuordnen
- Es gibt zwei Methoden zum Hinzufügen der Zuordnungskonfiguration
- XML-Dateien, die in der Binärdatei eingebettet sind, %code%
- Attribute, die dem Code hinzugefügt wurden
- Unterstützt erweiterte Mapping-Konfigurationen, einschließlich eins zu eins, eins zu eins, eins zu eins, viele zu viele, Vererbung etc..l etc ...
___