转换现有的LinqToSQL代码以与其他数据库兼容

时间:2009-04-11 11:28:38

标签: linq-to-sql ado.net

我有一个与SQL Server数据库通信的工作应用程序。 该应用程序使用LinqToSQL。

由于多种原因,我想将此应用程序转换为使用Microsoft Access。 (这是一小组数据,并发使用是可能的,但很少见,我想部署在无法访问SQL Server的机器上,我希望能够将整个数据库作为一个文件发送到只有Microsoft Access的同事。

我应该如何转换应用程序?由于LinqToSQL仅为SQL Server提供,我怀疑我遇到了其他开发人员偶尔遇到的问题;例如,将SQL Server应用程序发送到使用Oracle的新站点。

我能想到的唯一策略是搜索每次使用LinqToSQL的代码并将其更改为使用ADO.NET。显然,这将是一项耗时且容易出错的任务。

有没有更好的方法,还是我只是咬紧牙关继续下去?

下面是一段代码,以防万一示例有助于对话:

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

2 个答案:

答案 0 :(得分:0)

我建议通过像nHibernate这样的东西切换到更通用的DAL。这样下次你需要再次切换数据库时,你不必改变任何东西。根据LINQ查询的复杂程度,您甚至可以将它们与nHibernate LINQ模块一起使用。该模块仍处于测试阶段,我不能自己说话。

答案 1 :(得分:0)

ADO.NET实体框架是跨数据库的,应该更接近您当前的代码。