我正在为ASP.NET MVC 4构建示例MvcMovie教程。我正在使用EntityFramework Code First功能并创建了一个connectionString,如下所示。
<add name="MoveDBContext"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDictionary|\Movies2.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"
/>
此时一切正常。但后来我意识到我将连接字符串命名为MoveDBContext而不是MovieDBContext,并且作为完美主义者我将其重命名。执行此操作后,我现在在MoviesController / Index方法中收到错误。
public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();
public ActionResult Index()
{
return View(db.Movies.ToList()); // Error: Invalid value for key 'attachdbfilename'
}
...
}
如果我将名称更改回MoveDBContext,则错误消失。
有人能告诉我这个原始名称的引用位置吗?
答案 0 :(得分:2)
默认情况下,EF会查找与扩展DbContext的类型同名的连接字符串。
或者,最好放在Scott:
默认情况下,当您使用EF代码优先创建DbContext类时 将查找与其名称匹配的连接字符串 上下文类。因为我们将上下文类命名为“NerdDinners”,所以它 默认情况下会查找并使用上面的“NerdDinners”数据库 在我们的ASP.NET中实例化它时的连接字符串 应用
修改强>
仔细观察后,我认为你的连接字符串就是问题所在。您已DataDictionary
而不是DataDirectory
。试试这个(添加换行符以提高可读性):
<add name="MovieDBContext"
connectionString="Data Source=(LocalDB)\v11.0;
AttachDbFilename=|DataDirectory|\Movies.mdf;
Integrated Security=True"
providerName="System.Data.SqlClient" />
答案 1 :(得分:0)
显然,正如Ken所说,MoveDBContext没有被引用。
我从web.config中删除了整个connectionString,所有内容仍然正常运行。
因此,它仍然引出一个问题,“Visual Studio如何知道在我的SQLExpress实例中创建数据库?”和“在哪里配置?”