MVC - Context始终使用默认连接字符串

时间:2016-04-12 08:10:01

标签: sql model-view-controller connection-string sql-server-2014-localdb

我希望在以前使用网络表单之后选择MVC并且我一直在asp.net上做电影教程,但我遇到的问题完全令人困惑。

我的网络配置中有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连接字符串,而对于我的生活,我无法解决原因。如果我将默认连接字符串的数据源设置为moviedbcontext的数据源,它应该正常工作并连接到正确的数据库,但我无法解决为什么它只使用默认数据源(我甚至尝试更改名称)连接字符串和上下文无效)

任何帮助表示赞赏

干杯

1 个答案:

答案 0 :(得分: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; }
}

https://msdn.microsoft.com/en-us/library/gg679577%28v=vs.103%29.aspx处的MSDN文档提供了有关用于确定数据库名称的约定的信息。

  

protected DbContext()

     

使用约定构造一个新的上下文实例,以创建将连接到的数据库的名称。按照惯例,名称是派生上下文类的全名(名称空间+类名)。有关如何使用它创建连接的更多信息,请参阅DbContext的备注部分。