Преобразование существующего кода LinqToSQL для совместимости с другими базами данных - PullRequest
0 голосов
/ 11 апреля 2009

У меня есть работающее приложение, которое связывается с базой данных 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 голосов
/ 11 апреля 2009

ADO.NET Entity Framework является кросс-базой данных и должен быть ближе к вашему текущему коду.

0 голосов
/ 11 апреля 2009

Я бы порекомендовал перейти на более общий DAL через что-то вроде nHibernate. Таким образом, в следующий раз, когда вам нужно будет снова переключать базы данных, вам не нужно ничего менять. В зависимости от сложности ваших запросов LINQ вы можете даже использовать их с модулем nHibernate LINQ. Этот модуль все еще находится в бета-версии, и я сам не могу говорить за него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...