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:

  1. 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?)
  2. Si ORM est un sur-tuer, puis utiliser des requêtes SQL paramétrées.
  3. 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