Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 无法解析程序集模型.dll_.net_Entity Framework_Reflection - Fatal编程技术网

.net 无法解析程序集模型.dll

.net 无法解析程序集模型.dll,.net,entity-framework,reflection,.net,Entity Framework,Reflection,我有一个使用实体框架的类库项目,它工作得很好,直到我将模型移到一个单独的类库类型项目 在我将模型移出一个名为model的单独类库项目后,我将app/web.config中的连接字符串更改为: <add name="GlobalizationEntities" connectionString="metadata=res://Model.dll/Models.ResourceGlobalizationModel.csdl| res://Model.dll/Models.ResourceGl

我有一个使用实体框架的类库项目,它工作得很好,直到我将模型移到一个单独的类库类型项目

在我将模型移出一个名为model的单独类库项目后,我将app/web.config中的连接字符串更改为:

<add name="GlobalizationEntities" 
connectionString="metadata=res://Model.dll/Models.ResourceGlobalizationModel.csdl|
res://Model.dll/Models.ResourceGlobalizationModel.ssdl|
res://Model.dll/Models.ResourceGlobalizationModel.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;
Data Source=MyComputer\sqlexpress;
Initial Catalog=DaDatabase;
Integrated Security=true;
MultipleActiveResultSets=True&quot;" 
providerName="System.Data.EntityClient" />
我尝试了两个客户端的场景,即一个控制台应用程序和一个MVC应用程序


虽然控制台应用程序甚至不会将
BusinessObjects.dll
及其引用的dll,即
Model.dll
复制到控制台应用程序的
bin
目录,但MVC应用程序会这样做。然而,他们似乎根本找不到
Model.dll
程序集,并提出了上述
FileNotFoundException

我认为问题在于EF ConStr。通常,当您想要使用嵌入式资源时,应按如下方式设置
元数据

Metadata=res://<assemblyFullName>/<resourceName>. 
Metadata=res://

1)更改
res://Model.dll/
res://Model/
(不带“.dll”扩展名)在连接字符串的所有位置。您还可以指定程序集的全名,例如:
res://Model,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null/
(更多信息请访问:


2) 接下来,确保以下命名空间有效:
Model.Models.ResourceGlobalizationModel
。如果没有,请相应地更改连接字符串和/或程序集名称。

我已将
Ecom.edfx
EF模型移动到它自己的文件夹(
Ecom
)。
如果生成的EF连接字符串的元数据设置如下,请签入
Web.config
/(
app.config

<add name="EcomEntities" connectionString="metadata=res://*/Ecom.Ecom.csdl|res://*/Ecom.Ecom.ssdl|res://*/Ecom.Ecom.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;data source=****&quot;" providerName="System.Data.EntityClient" />


(目录结构是用
(点)而不是
/
(斜杠))完成的,如下res:///Ecom.Ecom.csdl(从res:///Ecom.csdl但不在自己的文件夹中)。

您是否检查了平台(AnyCPU,x86)每个项目的目标框架是什么?使用Fuslogvw.exe来解决程序集解析问题。它的踪迹告诉你它在哪里找到了文件。谢谢。我试过了。Fuslogvw.exe根本不报告任何内容。和中一样,它根本不生成日志,这让我相信它只适用于编译/部署的二进制文件。我会在一个已部署的环境中测试我的项目,但这太耗费时间了。我已经解决了我的问题。我很快就会发布解决方案。时间紧迫。多谢了,你知道吗?我也有类似的问题。我的牙床也有同样的问题。如果你仔细看这个问题,那正是我已经做过的。但是你没有设置程序集。。。!正确的格式是
元数据=res:///Model.dll
。我错了吗?!实体框架将程序集查找委托给.NET Framework中可用的默认程序集解析器,该解析器是反射API的一部分。您可以给它完整的程序集名称,也可以只给它一个名称。