Asp.net mvc 4 重命名connectionString后,密钥attachdbfilename的值无效

Asp.net mvc 4 重命名connectionString后,密钥attachdbfilename的值无效,asp.net-mvc-4,entity-framework-5,Asp.net Mvc 4,Entity Framework 5,我正在为ASP.NETMVC4构建示例MvcMovie教程。我使用EntityFramework代码优先功能,并创建了一个connectionString,如下所示 <add name="MoveDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDictionary|\Movies2.mdf;Integrated Security=True" providerNa

我正在为ASP.NETMVC4构建示例MvcMovie教程。我使用EntityFramework代码优先功能,并创建了一个connectionString,如下所示

<add name="MoveDBContext"
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDictionary|\Movies2.mdf;Integrated Security=True"
     providerName="System.Data.SqlClient"
/>
如果我将名称改回MoveDBContext,错误就会消失


有人能告诉我引用此原始名称的位置吗?

EF默认情况下会查找与扩展DbContext的类型同名的连接字符串

或者,最好是:

默认情况下,当您首先使用EF代码创建DbContext类时,它 将查找与服务器名称匹配的连接字符串 上下文类。因为我们将上下文类命名为“NerdDinners”,所以 默认情况下,将查找并使用上述“NerdDinners”数据库 在ASP.NET中实例化时的连接字符串 应用程序

编辑:

仔细观察后,我认为您的连接字符串是问题所在。您得到的是
DataDictionary
,而不是
DataDirectory
。尝试以下操作(添加换行符以提高可读性):


显然,正如Ken所说,MoveDBContext没有被引用

我从web.config中删除了整个connectionString,所有内容仍然正常运行


因此,它仍然回避了一个问题,“VisualStudio是如何知道在我的SQLExpress实例中创建数据库的?”以及“在哪里配置数据库的?”

我的类正确地命名为MovieDBContext。(不是MoveDBContext)。@Primc-是否在其他位置指定连接字符串名称?在您的解决方案中搜索“MoveDBContext”以查看它是否在其他任何地方被引用。查找所有“MoveDBContext”,匹配大小写,查找结果1,整个解决方案,“C:\Users\…\MvcMovie\MvcMovie\Web.config(13):@Primc-我刚刚仔细阅读了您的问题。“AttachDbFilename”值出现错误。当连接字符串被称为“MoveDBContext”时,EF根本不使用它。当您将其更改为“MovieDBContext”时,EF尝试使用它,但发现连接字符串有问题。您的Movies2.mdf文件是否按预期创建?实际上,作为测试,我将其从Movies.mdf更改为Movies2.mdf,但忘了将其更改回来。不,根本没有创建文件,但是正在我的SQLExpress实例中创建数据库和表(通过SQLServerMgmtStudio查看)。
 public class MoviesController : Controller
{
    private MovieDBContext db = new MovieDBContext();

    public ActionResult Index()
    {
        return View(db.Movies.ToList()); // Error: Invalid value for key 'attachdbfilename'
    }
...
}
<add name="MovieDBContext" 
     connectionString="Data Source=(LocalDB)\v11.0;
                       AttachDbFilename=|DataDirectory|\Movies.mdf;
                       Integrated Security=True" 
     providerName="System.Data.SqlClient" />