我的MyModel.edmx位于程序集DataAccess.dll中。我的Web项目(C#)
中引用了此程序集我的实体连接字符串是问题。
这是我从app.config复制到我的win.config:
<add name="MyModelEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
问题是我收到无法加载元数据源的错误。
我确信我的型号名称是正确的。我用Reflector检查了dll。
所以,我想我应该把我的dll包含在连接字符串中,我试过这个
<add name="MyModelEntities" connectionString="metadata=res://DataAccess.dll/MyModel.csdl|res://DataAccess.dll/MyModel.ssdl|res://DataAccess.dll/MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=xxx;initial catalog=xxx;persist security info=True;user id=xxx;password=xxx;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
但是我收到的错误是无法在程序集枚举列表中找到DataAccess.dll 。
有没有办法直接在dll中引用我的模型。 我的dll并没有强烈命名为dll。
感谢任何帮助。
由于
答案 0 :(得分:0)
我有与bobetko类似的经历,使用Entity Framework 5重新创建项目和数据库并使其工作一段时间。 (VS 2013 Express和SQL Server 2008 R2)
然后,我这样做了,它解决了我所有的问题......
将模型和映射文件复制到输出目录
http://msdn.microsoft.com/en-us/library/vstudio/cc716709(v=vs.100).aspx
我认为VS会被解决方案中的多个项目与同一个数据库的多个连接混淆。上面的解决方案为我解决了这个问题并修复了我破碎的项目。
答案 1 :(得分:0)
这可能没什么用,但是应该清楚一些元数据资源如何与引用的程序集一起工作。
我遇到了同样的问题,在阅读了JimMat对原始问题的评论以及相当多的反复试验之后,我了解到Entity在元数据字符串中对它的合格名称很挑剔。
确保元数据工件处理(如bluesky所述)设置为嵌入输出程序集,因为这会将csdl / ssdl / msl文件烘焙到该程序集的DLL,并被复制到引用项目的bin目录中。重建解决方案。
示例:如果我的DbContext位于名为&#34; Data&#34;的项目/程序集中。使用完全限定名称&#34; Data.Staging.Context,&#34;我的元数据看起来像
metadata=res://*/Staging.Context.csdl|res://*/Staging.Context.ssdl|...
或者,据JimMat说:
metadata=res://Data/Staging.Context.csdl|res://Data/Staging.Context.ssdl|...