我需要一个有效的sql Server 2008连接字符串,用于Entity Framework 4.1的代码优先项目.我现在用MVC 3使用它.
现在还是很简单,只有1个项目,3个简单的模型类…
我只能找到一切,如sql Express,网络上的CE连接…
通过web.config(“ApplicationServices”)中的名称查找是可以的,因为当我尝试使用我有特定的错误.
我能得到的最好的是:
Unable to load the specified Metadata
resource.
我试图给它像Metadata = res://MyWebProject/MyWebProject.csdl | …也没有成功.
所以它不会为我创建数据库 – 甚至没有打到OnModelCreating(DbModelBuilder modelBuilder)方法.
如果我尝试使用像“sql Server Express”那样的“老式”连接,则会忽略元数据.
感谢您的帮助提前.
解决方法
“Code-First”的想法是,您不必处理连接字符串中提到的.csdl,.ssdl和.msl文件.如果没有指定其他地方,DbContext将按照您所描述的方式在web.config中查找连接字符串. DbContext类的构造函数将接受指定web.config中连接字符串名称的名称 – 值对.例如:
<connectionStrings> <add name="ConnectionName" providerName="System.Data.sqlClient" connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> </connectionStrings>
可以在你的上下文中引用:
class MyContext : DbContext { public MyContext() : base("name=ConnectionName") { } ... }
我提供的示例连接字符串实际上是用于sql Server数据库.指定ProviderName是很重要的,因为“代码优先”要求它生成相应的.ssdl-File(存储模式).