.NET 4:如何在Web.Config中的其他程序集中配置EDMX文件

时间:2013-01-08 11:26:10

标签: c# asp.net sql-server web-config connection-string

我在配置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中,Project 1中的.EDMX文件的更新顺利进行,当我在项目2中有.EDMX文件时,应用程序按预期运行。

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

3 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:4)

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

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

它必须与路径.csdl,.ssdl和.msl文件作为Project1程序集内的资源

无论如何,事情现在正常运作

答案 2 :(得分:1)

更简单的方法是从Web.Config获取连接字符串并将它们复制到App.Config中,并将EDMX的连接字符串指向相同的DB信息。 e.g

  <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从Project 2移动到Project 1,您还需要检查名称空间是否正确,您可以通过打开Database.edmx和goto代码来检查。