8

我在配置 EDMX 文件时遇到问题,该文件位于其他程序集中,而不是 Web 项目。我的项目看起来有点像这样:

Project 1
--> Database.edmx
--> App.Config

Project 2
--> Ton's of .cs and .aspx files.
--> Web.Config with the proper connection string.

在 Visual Studio 中,项目 1 中 .EDMX 文件的更新进展顺利,当我在项目 2 中拥有 .EDMX 文件时,应用程序按预期运行。

任何人都知道如何在项目 1 中配置 .EDMX 文件以指向 Web.Config 的连接字符串?(或者我应该使用 Project1.dll.config 来配置项目 1?)

4

3 回答 3

11

您必须更改*.edmx 文件所在的程序集名称的连接字符串:

<add name="Entities" connectionString="metadata=res://*/Models.EF.Model.csdl|res://*/Models.EF.Model.ssdl|res://*/Models.EF.Model.msl;provider=System.Data.SqlClient;provider connection ... ;" providerName="System.Data.EntityClient" />

为了

<add name="Entities" connectionString="metadata=res://Project2/Models.EF.Model.csdl|res://Project2/Models.EF.Model.ssdl|res://Project2/Models.EF.Model.msl;provider=System.Data.SqlClient;provider connection ... ;" providerName="System.Data.EntityClient" />
于 2013-01-08T11:48:35.667 回答
4

事实证明,有两个问题。一个是解决替换连接字符串中的 * 的问题。

第二个问题是这里描述的问题:http: //blogs.teamb.com/craigstuntz/2010/08/13/38628/

它与路径 .csdl、.ssdl 和 .msl 文件作为 Project1 程序集中的资源有关

无论如何,现在一切正常

于 2013-01-08T14:18:57.343 回答
1

更简单的方法是从 Web.Config 获取连接字符串并将它们复制到 App.Config 并将 EDMX 的连接字符串指向相同的数据库信息。例如

  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
    <add name="aspnetdbEntities" connectionString="metadata=res://*/Data.PSBData.csdl|res://*/Data.PSBData.ssdl|res://*/Data.PSBData.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\aspnetdb.mdf;integrated security=True;user instance=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

如果您已将 Database.edmx 从项目 2 移动到项目 1,您还需要检查命名空间是否正确,您可以通过打开 Database.edmx 并转到后面的代码来检查。

于 2013-01-08T11:44:57.800 回答