2009-04-11 7 views
0

Ich habe eine funktionierende Anwendung, die mit einer SQL Server-Datenbank kommuniziert. Diese Anwendung verwendet LinqToSQL.Konvertieren Sie vorhandenen LinqToSQL-Code, um mit anderen Datenbanken kompatibel zu sein

Aus einer Reihe von Gründen möchte ich diese Anwendung für die Verwendung von Microsoft Access stattdessen konvertieren. (Es ist eine kleine Menge von Daten, gleichzeitige Verwendung ist möglich, aber selten, ich möchte auf Computern bereitstellen, die keinen Zugriff auf SQL Server haben, und ich möchte in der Lage sein, die gesamte Datenbank als eine Datei für die Verwendung von zu senden Kollegen, die nur Microsoft Access haben).

Wie soll ich die Anwendung konvertieren? Da LinqToSQL nur für SQL Server bereitgestellt wird, vermute ich, dass ein Problem auftritt, auf das andere Entwickler gelegentlich stoßen. B. um eine SQL Server-Anwendung an eine neue Site zu senden, die Oracle verwendet.

Die einzige Strategie, die ich mir vorstellen kann, ist, den Code für jede Verwendung von LinqToSQL zu suchen und sie in ADO.NET zu ändern. Offensichtlich wird dies eine zeitaufwendige und fehleranfällige Aufgabe sein.

Gibt es einen besseren Weg, oder sollte ich nur die Zähne zusammenbeißen und weitermachen?

Ein Code-Snippet ist unten, nur für den Fall ein Beispiel, das Gespräch hilft:

 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(); 

Antwort

0

I wie nHibernate auf eine allgemeinere DAL über etwas Schalt empfehlen würde. Auf diese Weise müssen Sie beim nächsten Mal, wenn Sie die Datenbanken wechseln müssen, nichts mehr ändern. Abhängig davon, wie kompliziert Ihre LINQ-Abfragen sind, können Sie sie möglicherweise sogar mit dem nHibernate LINQ-Modul verwenden. Dieses Modul befindet sich noch in der Beta-Phase und ich kann selbst nicht dafür sprechen.

0

ADO.NET Entity Framework ist datenbankübergreifend und sollte Ihrem aktuellen Code näher sein.

Verwandte Themen