Frage

Viele Produktentwickler möchten eine .NET -Anwendung schreiben, die nahtlos mit beliebten RDBMs wie SQL Server, Oracle, DB2, MySQL zusammenarbeitet. Wenn wir den Datenanwendungsblock verwenden, wählt er dynamisch den Datenbank -Treiber (Oracleclient, SQLCLIENT oder OLEDBCLIENT) anhand der Konfiguration aus.

Alle Datenbanken haben jedoch ihre eigenen Aromen von SQL. Es gibt subtile Unterschiede, die verhindern, dass eine SQL -Code -Basis allgemein verwendet wird - die Funktionsnamen sind unterschiedlich, die Art und Weise, wie Daten verarbeitet werden, sind unterschiedlich, die Art und Weise, wie Identitätsspalten gehandhabt werden, sind unterschiedlich und so weiter.

Man könnte ein Produkt von Drittanbietern von Data Direct verwenden, um den neutralen DB -Code mit vordefinierten Escape -Sequenzen zu schreiben.

Gibt es Tools oder Produkte von Microsoft, die sich mit diesem Problem befassen?

War es hilfreich?

Lösung

Das Microsoft ado.net Entity Framework ist ein Objektrelationskartierung Framework von Microsoft, mit dem Sie Code schreiben können, der (etwas) db-agnostisch ist. Alle wichtigen DBMs unterstützen das Entity -Framework, obwohl Sie für viele (z. B. MySQL, Postgres) etwas, das von Ihrer .NET -Framework -Installation getrennt ist, herunterladen müssen.

HINWEIS: Ich muss noch an einem einzigen großen Projekt mit einem O/RM-Tool arbeiten, in dem es nicht mindestens einen Fall gab Eine Abfrage auf eine bestimmte Weise zu schreiben, um einen guten Abfrageplan zu erhalten). Aber ein gutes O/RM kann die meiste Zeit arbeiten, um zu verhindern, dass SQL schreiben muss.

Die aktuelle Version des Entity-Frameworks ist jedoch in einer Reihe von Dimensionen ziemlich begrenzt- andere O/RM-Frameworks wie Nhibernate, Unterschall, usw. sind viel reifer, wo "reif" eine tiefere Auswahl an DBMS -Funktionen unterstützt, ohne sich auf native SQL, breitere Unterstützung der Community, bessere Leistung usw. auszahlen zu müssen.

Dies ist meine höfliche Art zu sagen, dass ich für ein reales, relativ komplexes Projekt nicht glaube, dass die aktuelle Version des Entity-Frameworks der beste Weg ist, um relativ zu den anderen verfügbaren O/RM-Tools zu gehen.

Anscheinend das bevorstehende .NET 4.0/VS2010 Version des Microsoft Entity Frameworks ist stark verbessert, daher ist die obige Aussage möglicherweise im nächsten Jahr möglicherweise nicht wahr. Das neue Entity-Framework fügt beispielsweise DDL Unterstützung hinzu, sodass Sie Tabellen und Indizes auf dBMS-unabhängige Weise erstellen können. Außerdem nutzt das .NET 4.0 Entity Framework eine coole Funktion namens namens T4 -Vorlagen, was ein netter Merkmal für den automatischen Generate-Code zum Bauzeit ist, was für Dinge wie O/RM-Wrapper wichtig ist, die mit einem externen DB-Schema synchronisiert werden müssen-und die besser liefern sollte (aka vorkompiliert). Leistung als O/RM -Tools, die die Arten von Datenbankspalten bis zur Laufzeit erst kennen.

Andere Tipps

Wie ich verstanden habe, suchen Sie nach Tool zum Schreiben von RDBMS-unabhängigen SQL, aber nicht nach einem ORM. Dies ist ein sehr tatsächliches Problem, das von verschiedenen ORM -Anbietern auf unterschiedliche Weise gelöst wird. Ich kann einfach erwähnen XTSIVE SQL Dom Werkzeug, das für ihre ORM - entwickelt wurde - DataObjects.net. Es handelt sich um eine Abstraktion über SQL, die es ermöglicht, Abfragen mithilfe von DOM-Modell mit vollem Funktionsumfang zu schreiben. In diesem Moment wird SQL DOM nicht getrennt von DataObjects.net gefördert, aber es ist ein Open -Source -Produkt, und Sie können seine Autoren sicherlich darum fragen. Soweit ich weiß, wird es in einigen Projekten von Drittanbietern erfolgreich eingesetzt.

Nicht direkt von Microsoft. Diese Tools werden üblicherweise als Objektrelationskenner oder Short ORM bezeichnet. Nhibernate ist beispielsweise ein häufiges und weit verbreitetes Orm, das sehr sicher zu Ihren Anforderungen entspricht. Natürlich gibt es andere kommerzielle Produkte wie Telerik OpenAccess ORM, Devexpress XPO oder RemObjects DataAbstract, die Ihnen helfen, Datenbank agnostisch zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top