Укажите строку подключения в dbml на app.config - PullRequest
28 голосов
/ 28 февраля 2011

Могу ли я просто указать строку подключения в Dbml.designer.cs на строку подключения в app.conf?Ниже я написал код, который успешно указывает на app.config.

public leDataContext() : 
    base(ConfigurationManager.ConnectionStrings["leConnString"].ToString(), mappingSource)
    {
        OnCreated();
    }

Однако, когда я изменяю или добавляю таблицу в dbml, он начинает автоматически заменять этот код на этот

 public leDataContext() : 
            base("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\My Projects\\App_Data\\le.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True", mappingSource)
    {
        OnCreated();
    }

Я расширил опцию «Соединение».Установите «Настройки приложения» в False

Ответы [ 2 ]

47 голосов
/ 22 ноября 2012

Это больше похоже на расширение ответа @ Алекса.

Шаг 1 : установите для свойства подключения вашего файла .dbml значение «none».

enter image description here

Шаг 2: Создайте новый отдельный частичный класс с тем же именем, что и у существующего частичного класса для файла .dbml. И установите свойство connectionString с помощью конструктора без параметров.

public partial class DataClassesDataContext
{
  public DataClassesDataContext() : base(ConfigurationManager.ConnectionStrings["Dev-connString"].ConnectionString)
  {
    OnCreated();
  }
}

Шаг 3: Почти готово! И наконец, вам нужно определить вашу connectionString в файле app.config, как показано ниже.

<connectionStrings>

  <add
  name="Dev-connString"
  connectionString="Data Source=yasser-home;Initial Catalog=pp;Persist Security Info=True;User ID=sa;Password=gogole"
  providerName="System.Data.SqlClient" />

</connectionStrings>

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

Почему я создал отдельный частичный класс? Не могу ли я отредактировать существующий файл Dbml.designer.cs?

Не изменяйте файл Dbml.designer.cs вручную, потому что он будет перезаписан при добавлении / редактировании / удалении таблицы, сохраненного процесса и т. Д.

40 голосов
/ 01 марта 2011

Не изменяйте Dbml.designer.cs файл вручную, потому что он будет перезаписан при редактировании / добавлении таблицы и т. Д., Как вы сказали.Вместо этого установите свойство Connection для файла конструктора .dbml равным None и добавьте частичный класс с конструктором без параметров:

public partial class leDataContext
{ 
   public leDataContext() : 
       base(ConfigurationManager.ConnectionStrings["leConnString"].ToString())
    {
        OnCreated();
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...