Question

Les développeurs Beaucoup de produits veulent écrire une application .NET qui fonctionnera de façon transparente avec les SGBDR populaires comme serveur SQL, Oracle, DB2, MySql. Si nous utilisons le bloc d'application de données, il prend dynamiquement le pilote de base de données (OracleClient, SQLClient ou OleDBClient) en fonction de la configuration.

Cependant, toutes les bases de données ont leurs propres saveurs de SQL. Il existe des différences subtiles qui empêchent une base de code SQL à utiliser universellement - les noms de fonctions sont différentes, les dates de façon sont traitées sont différentes, les colonnes d'identité de façon traitées sont différentes et ainsi de suite

.

On pourrait utiliser un produit tiers de données directe écrire DB Code neutre en utilisant des séquences d'échappement prédéfinies.

Y a-t-il des outils ou des produits de Microsoft qui traite de ce problème?

Était-ce utile?

La solution

Le Entity Framework Microsoft ADO.NET est un Object-Relational cadre de cartographie de Microsoft qui est conçu pour vous permettre d'écrire du code qui est (légèrement) DB-agnostique. Tous les principaux SGBD ont le soutien de l'Entity Framework, bien que pour beaucoup (par exemple MySQL, Postgres) vous aurez besoin de télécharger quelque chose de séparé de votre .NET Framework installer.

Note: Je dois encore travailler sur un seul grand projet en utilisant un outil O / RM où il n'y avait pas au moins un cas où nous avons dû débourser pour SQL-- native soit pour des fonctionnalités spécifiques à DB ou pour la performance raisons (nécessaires pour écrire une requête d'une certaine façon d'obtenir un bon plan de requête). Mais un bon O / RM peut travailler la plupart du temps pour éviter d'avoir à écrire SQL.

Cela dit, la version actuelle de l'Entity Framework est assez limité dans un certain nombre d'autres cadres dimensions-- O / RM comme NHibernate , SubSonic , etc. sont beaucoup plus matures, où « mature "signifie soutenir une gamme de fonctionnalités de SGBD plus profond sans avoir à débourser pour SQL natif, plus large soutien communautaire, une meilleure performance, etc.

Ceci est ma façon polie de dire que, pour un monde réel, projet relativement complexe, je ne pense pas que la version actuelle du Entity Framework est la meilleure façon d'aller par rapport aux autres outils O / RM disponibles .

Apparemment, la prochaine .NET 4.0 / VS2010 version de Microsoft Entity Framework est beaucoup améliorée, de sorte que la déclaration ci-dessus peut ne pas être vrai l'année prochaine. Le nouveau Entity Framework ajoute le support pour DDL, par exemple, vous pouvez créer des tables et des index d'une manière de SGBD indépendant. En outre, le Entity Framework .NET 4.0 capitalise une fonctionnalité appelée T4 Modèles , qui est une caractéristique propre au code auto-générer au moment de la construction, ce qui est important pour des choses comme les emballages O / RM qui doivent être conservés en phase avec un schema-- DB externe et qui devrait donner de meilleures performances (aka pré-compilé) que faire des outils O / RM qui ne connaissent pas les types de colonnes de base de données jusqu'à l'exécution.

Autres conseils

Comme je l'ai compris, vous êtes à la recherche d'outils pour SGBDs écriture SQL, mais pas un ORM. Ce problème est très réel résolu par différents fournisseurs ORM de différentes façons. Je ne peux parler Xtensive SQL DOM outil, qui a été développé pour leur ORM - DataObjects.Net . Il est une abstraction sur SQL permettant d'écrire des requêtes en utilisant le modèle DOM complet. En ce moment, SQL DOM n'est pas promu séparément DataObjects.Net, mais il est un produit open source et vous pouvez sûrement demander à ses auteurs à ce sujet. Pour autant que je sais qu'il est utilisé avec succès dans certains projets de tiers.

Pas directement de Microsoft. Ces outils sont généralement nommés objet-relationnel cartographes ou court ORM. NHibernate, par exemple, est un ORM commun et largement utilisé qui est très sûr pour répondre à vos besoins. Bien sûr, il existe d'autres produits commerciaux comme Telerik OpenAccess ORM, DevExpress XPO ou RemObjects DataAbstract qui vous aideront à être agnostique base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top