Quand devrais-je utiliser Odbc, OleDb, SQLClient? Quels sont les compromis
Je suis starting off avec une base de données sql server. Il semblerait donc que je devrais utiliser System.Data.SqlClient
espace de noms. Mais, il y a une chance que nous pourrions arrêter notre base de données sql server et aller vers MySql ou Oracle. Pour cette raison, je suis venue avec un ensemble de normes sur la façon dont notre .Net apps vous permettra de communiquer avec la base de données, afin de faciliter la migration vers un autre système de base de données à l'avenir, si nous avons besoin de le faire.
Voici donc les normes:
- Utiliser un ORM, si possible (par exemple
NHibernate) (Pas de LINQ, car il ne
prend en charge SqlServer, mais qu'
Cadre de l'entité et de son soutien à
Oracle et MySql?) - Si ORM est un sur-tuer, puis utiliser des requêtes SQL paramétrées.
- Utiliser des procédures stockées uniquement pour de longues ou complexes, des actions qui
doivent être effectués sur le
la base de données.
Qui m'amène à mon principale question à portée de main.
D'espace de noms dois-je utiliser pour le code de mes DAL?
Il me semble que le choix est entre System.Data.ODBC
et System.Data.OleDB
:
- Quels sont les compromis?
- Est un privilégié par rapport à l'autre?
- Quelles sont vos pensées sur les 3 premières normes?
OriginalL'auteur Raj Rao | 2009-06-01
Vous devez vous connecter pour publier un commentaire.
Système.Les données.SQLClient
Se connecte à SQL Server 2000 et plus tard seulement, mais vous permettra d'obtenir des performances optimales lors de la connexion aux bases de données.
Système.Les données.OledbClient
Se connecte à SQL 6.5
OLEDBClient vous donne la possibilité de se connecter à d'autres bases de données comme ORACLE ou d'Accès. Mais pour travailler avec SQL Server, vous obtiendrez de meilleures performances à l'aide de SQLClient.
Remarque: Pour la connexion à ORACLE, Microsoft a également ORACLEClient.
Système.Les données.ODBCClient
Se connecte aux bases de données existantes, en utilisant des pilotes ODBC. (E. g. MS Access 97.)
Original source
OriginalL'auteur anshul
Vous voulez utiliser le pilote SQL Server. Je comprends ce que vous essayez de faire, mais la façon dont tu le ferais en charge plusieurs bases de données en insérant une autre couche d'abstraction. Vous pouvez faire de nombreuses façons. Mais vous mettez la base de données de code spécifiques au bord de votre hiérarchie de classe. Par conséquent, chaque classe peut obtenir les avantages de la base de données des fonctionnalités spécifiques, mais le niveau plus élevé que les appelants ne sais pas ou le soin de la base de données est utilisée en dessous. Aussi loin que l'Orm, je préfère LLBLGen, mais c'est juste ma préférence.
Aussi, juste pour clarifier, LINQ n'est pas spécifique à SQL Server. C'est-LINQ-to-SQL. LINQ est une interrogation de la technologie que vous pouvez utiliser dans LINQ-to-SQL, LINQ-to-Entités, LINQ-to-objets, et même LLBLGen prend en charge LINQ.
OriginalL'auteur BobbyShaftoe
Pas d'importance si vous utilisez SQLClient ou Odbc pour l'instant, si vous utilisez des procédures stockées ou une autre base de données de caractéristiques spécifiques, vous devrez réécrire ces si vous modifiez les moteurs de base de données.
OriginalL'auteur Rob Bratton
Je venais d'utiliser SqlClient et ré-écrire/re-générer le DAL s'il a changé.
Sauf si vous allez mettre en œuvre et tester sur plusieurs plates-formes à droite maintenant, je ne suis pas sûr que l'effort supplémentaire dès maintenant est une grosse affaire ou moins de l'effort de refaire le DAL, et le fait que vous avez un DAL à tous les moyens que vous avez tout en un seul endroit pour une modification ultérieure de toute façon.
OriginalL'auteur Cade Roux
Si vous avez une idée que vous serez en échangeant des bases de données (ou de la prise en charge de plusieurs backends) puis un ORM est le chemin à parcourir. Sinon, vous aurez encore à refactor/réécrire beaucoup de votre DAL afin de soutenir le changement. Si votre application est petit, il ne sera pas mauvais, mais rien de substantiel et vous serez mal.
OriginalL'auteur Nick DeVore
Vous trouverez que l'utilisation de SQL Server SqlClient est beaucoup plus rapide et plus facile à développer que OleDB et ODBC - à moins qu'il est extrêmement probable que vous aurez besoin de prendre en charge plusieurs plates-formes, vous trouverez les avantages l'emportent sur les risques que vous aurez besoin de réécrire votre DAL.
En outre, à l'aide de ODBC /OleDB est 1 seule manière de maintenir l'indépendance de plate-forme vous trouverez peut - être plus efficace d'avoir plusieurs implémentations de votre DAL, chacune utilisant un client natif de la plate-forme utilisée.
OriginalL'auteur Justin
J'ai entendu dire qu'à moins d'une touche de fonction, vous ne devriez pas trop vous inquiéter quant au maintien de l'indépendance de plate-forme. Cela dit,
SQLClient vous donnera accès natif et devrait être plus performant (il n'a pas à faire tout abstractions/traductions).
La seule chose que vous avez à changer pour obtenir OLEDB de travail vs ODBC est votre chaîne de connexion. OLEDB a un peu plus de client-côté de l'intelligence, de sorte qu'il offre de meilleures performances.
OriginalL'auteur steamer25