Переключение базы данных в LinqToSql - PullRequest
3 голосов
/ 22 января 2010

Как мы можем изменить базовую базу данных для WebApp на основе Linq?

например:

Когда мы выпускаем наше веб-приложение, скажем, чтобы выпустить из производства, если используется ADO.NET, это так же просто, как изменение строки подключения в web.config , чтобы указать на используемую базу данных. Базы данных практически идентичны, другие данные хранятся ..

Что и как мы можем изменить unerLying Database при использовании LINQ?

Примечание; Использование c #

спасибо

Ответы [ 3 ]

4 голосов
/ 22 января 2010

Вы все еще должны быть в состоянии сделать то же самое; DataContext (включая сгенерированные SqlMetal) включают перегрузки конструктора, которые принимают строку подключения. Просто извлеките нужную строку из ConfigurationManager (или чего-либо еще) и введите ее.

На самом деле, если вы не возражаете против взлома DBML напрямую, он действительно поддерживает чтение из ConfigurationManager напрямую ; проблема в том, что дизайнер IDE ненавидит это и ломает его каждый раз, когда вы на него смотрите. Какой позор ( обсуждается здесь ).

1 голос
/ 22 января 2010

Я бы настоятельно рекомендовал в вашем приложении создавать экземпляр контекста данных с перегрузкой строки подключения. Я создаю вспомогательный компонент, который делает:

public static class DCHelper
{
  public static MyDataContext Create()
  {
     return new MyDataContext(ConfigurationManager.ConnectionStrings["CS"].ConnectionString);
  }
}

Таким образом, у меня есть только одно место, чтобы изменить способ создания экземпляра контекста, или я могу изменить файл конфигурации для переключения баз данных. Или метод create может потребовать некоторого ввода для определения соединения.

0 голосов
/ 22 января 2010

Если вы просто хотите узнать, как вы можете переместить строку подключения в Web.Config , у Рика Строла есть пример в его блоге.

Если вы хотите перейти на другой тип базы данных ... Возможно, вы сможете сохранить большинство (если не все запросы). Но вам нужно будет сменить провайдера / репозиторий. LINQ 2 SQL в настоящее время поддерживает только MSSQL (и это все, что он действительно должен делать).

Проверьте LINQ to Entities , если вам нужна большая гибкость.

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