2009-04-11 3 views
0

J'ai une application qui communique avec une base de données SQL Server. Cette application utilise LinqToSQL.Convertir le code LinqToSQL existant pour être compatible avec d'autres bases de données

Pour un certain nombre de raisons, je veux convertir cette application en utilisant Microsoft Access à la place. (C'est un petit ensemble de données, l'utilisation simultanée est possible mais rare, je veux déployer sur des machines qui n'ont pas accès à SQL Server, et je veux être capable d'envoyer toute la base de données comme un fichier à utiliser par collègues qui ont seulement Microsoft Access).

Comment devrais-je procéder à la conversion de l'application? Comme LinqToSQL n'est fourni que pour SQL Server, je pense que je suis confronté à un problème rencontré occasionnellement par d'autres développeurs; par exemple pour expédier une application SQL Server à un nouveau site qui utilise Oracle. La seule stratégie que je peux penser est de rechercher le code pour chaque utilisation de LinqToSQL et le changer en utilisant ADO.NET. Évidemment, ce sera une tâche longue et sujette aux erreurs.

Y a-t-il un meilleur moyen, ou devrais-je juste serrer les dents et continuer?

Un bout de code est ci-dessous, juste au cas où un exemple aide la conversation:

 var existing = 
      from ph in _dataContext.pub_hols 
      where ph.pub_hol_def_id == this._publicHolidayDefId 
       && 
      ph.pub_hol_date.Year == year 
      select ph; 
     _dataContext.pub_hols.DeleteAllOnSubmit(existing); 
     _dataContext.pub_hols.InsertAllOnSubmit(GetPublicHolidays(cellsForYear)); 
     _dataContext.SubmitChanges(); 

Répondre

0

Je vous recommande de passer à un DAL plus générique par quelque chose comme NHibernate. De cette façon, la prochaine fois que vous devrez changer de base de données, vous n'aurez plus besoin de changer quoi que ce soit. En fonction de la complexité de vos requêtes LINQ, vous pouvez même les utiliser avec le module nHibernate LINQ. Ce module est toujours en version bêta et je ne peux pas en parler moi-même.

0

ADO.NET Entity Framework est une base de données croisée, et devrait être plus proche de votre code actuel.