MVC-Context总是使用默认的连接字符串



在之前处理过web表单之后,我想学习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连接字符串,就我而言,我不知道为什么。如果我将默认连接字符串的数据源设置为moviedcontext的数据源,它会正常工作,并连接到正确的数据库,但我不明白为什么它只使用默认连接字符串(我甚至尝试更改连接字符串和上下文的名称,但都无济于事)

感谢的任何帮助

干杯

尝试在派生的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的备注部分。

最新更新