【问题标题】:SQL Server 2008 connection string for entity framework 4.1 code first实体框架 4.1 代码优先的 SQL Server 2008 连接字符串
【发布时间】:2011-09-28 09:24:45
【问题描述】:

我需要一个用于 Entity Framework 4.1 代码优先项目的有效 SQL Server 2008 连接字符串。我现在将它与 MVC 3 一起使用。

目前还是很简单的,只有1个项目,3个简单的模型类...

我只能在网络上找到其他所有内容,例如 Sql Express、CE 连接...

web.config(“ApplicationServices”)中按名称查找它是可以的,因为当我尝试使用时,我得到了特定的错误。

我能得到的最好的结果是:

无法加载指定的元数据 资源。

我也尝试像metadata=res://MyWebProject/MyWebProject.csdl| ... 一样给它,但没有成功。

所以它不会为我创建数据库 - 甚至没有命中 OnModelCreating(DbModelBuilder modelBuilder) 方法。

如果我尝试使用像我为 SQL Server Express 找到的那种“老式”连接,它会丢失元数据。

提前感谢您的帮助。

【问题讨论】:

    标签: asp.net-mvc-3 configuration entity-framework-4 web-config entity-framework-4.1


    【解决方案1】:

    “代码优先”的理念是,您不必处理连接字符串中提到的 .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(存储架构)。

    【讨论】:

    • 谢谢,这正是我需要的。
    • 如果数据库架构不存在而我使用的是sql server 2008,代理会自动创建数据库吗?
    【解决方案2】:

    此外,您可以在 DbContext 类之后命名您的连接字符串。在这种情况下,您可能不会提及连接字符串的名称

    class MyContext : DbContext
    {
         //public MyContext() : base("name=ConnectionName") { } // not needed
         ...
    }
    

    连接字符串如下

    <connectionStrings>
        <add name="MyContext" 
             providerName="System.Data.SqlClient"
             connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" />
    </connectionStrings> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      相关资源
      最近更新 更多