Невозможно сначала изменить строку подключения с кодом Entity Framework 4.1 - PullRequest
3 голосов
/ 16 июля 2011

У меня возникли проблемы при изменении строки подключения, используемой кодом структуры объекта, для моего проекта.Я создал проект MVC3, а затем добавил два проекта, DomainClasses и DataAccess.

В проекте DomainClasses есть один файл классов с именем Classes.cs с одним классом:

public class User
{
    public int ID { get; set; }
    public string Username { get; set; }
    public string EmailAddress { get; set; }
    public string Password { get; set; }
    public int StatusID { get; set; }
    public DateTime DateCreated { get; set; }
}

В проекте DataAccess есть одинфайл класса с именем PLNQDB.cs с одним классом:

public class PLNQDB : DbContext
{
    public DbSet<User> Users { get; set; }
}

У меня есть ссылка на каждый из этих проектов в моем проекте MVC, и все прекрасно работает, работает и даже создает файл базы данных, в который я могу сохранитьи извлекать данные из.

При запуске проекта я вижу в окне Autos строку подключения, используемую в this.db.base.Database.Connection.base.ConnectionString =

"Data Source=.\\SQLEXPRESS;Initial Catalog=PLNQ.DataAccess.PLNQDB;Integrated Security=True;MultipleActiveResultSets=True"

Мой вопрос заключается в том, как переопределить эту автоматически сгенерированную строку подключения, чтобы использовать мой удаленный сервер.Я добавил строку подключения в файл web.config проекта MVC.

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=255.255.255.255;Initial Catalog=PLNQ;User ID=blah;Password=blah"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

, но каждый раз, когда я запускаю проект, он по-прежнему использует автоматически сгенерированную строку подключения.Я также попытался добавить файлы App.config с одинаковой строкой подключения в проектах DataAccess и DomainClasses.

Чего мне не хватает?

1 Ответ

15 голосов
/ 16 июля 2011

Есть несколько вариантов

1 Вам нужно указать строку подключения, соответствующую вашему DbContext имени класса.

например

  <connectionStrings>
    <add name="PLNQDB"
         connectionString="Data Source=255.255.255.255;Initial Catalog=PLNQ;User ID=blah;Password=blah"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

2 В вашем конструкторе DbContext вызовите конструктор базового класса с именем строки подключения

public class PLNQDB : DbContext
{
    public PLNQDB():base("ApplicationServices"){}

    public DbSet<User> Users { get; set; }
}
...