2

Я ищу, чтобы забрать MVC после работы с веб-формами, и я занимаюсь учебным курсом на asp.net, но у меня проблема, которая совершенно запутывает.MVC - Контекст всегда использует строку подключения по умолчанию

У меня есть строка 2 соединения в моем веб-конфигурации:

<connectionStrings> 
     <add name="MovieDBContext" 
     connectionString="Data Source=(LocalDB)\(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
     <add name="DefaultConnection" connectionString="Data Source="(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MvcMovie-20160408044847.mdf;Initial Catalog=aspnet-MvcMovie-20160408044847;Integrated Security=True" 
      providerName="System.Data.SqlClient" /> 
</connectionStrings> 

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

public class MovieDBContext : DbContext 
    { 
     public MovieDBContext() : base("MovieDBContext"){ } 

     public DbSet<Movie> Movies { get; set; } 
    } 

Все, что я делаю это использует строку подключения по умолчанию, а не строки соединения MovieDbContext и для жизни меня я не могу понять, почему. Если я установил источник данных ault string в источник данных moviedbcontext, который он работает, как он должен, и подключается к правой базе данных, но я не могу понять, почему он будет использовать только по умолчанию (я даже попытался изменить имена строки подключения и контекста на не помогло)

Любая помощь не оценил

Приветствия

ответ

0

Попробуйте комментируя вызов базового конструктора в производном классе DbContext и пусть конструктор по умолчанию можно назвать. Убедитесь, что ваш файл web.config для подключения находится в корневом файле web.config приложения и соответствует его ожидаемым соглашениям об именах (подробнее см. Далее).

public class MovieDBContext : DbContext 
{ 
    //// comment the call to the base constructor 
    // public MovieDBContext() : base("MovieDBContext"){ } 

    public DbSet<Movie> Movies { get; set; } 
} 

В документации MSDN на https://msdn.microsoft.com/en-us/library/gg679577%28v=vs.103%29.aspx предоставляет информацию о конвенции, используемой для определения имени базы данных.

защищено DbContext()

Формирует новый контекст экземпляр с помощью конвенций создать имя базы данных, к которому будет производиться подключение. По соглашению имя является полным именем (пространство имен + имя класса) производного класса. Для получения дополнительной информации о том, как это используется для создания соединения, см. Раздел замечаний для DbContext.

+0

Try ': base (" Name = MovieDbContext ")' –