实体框架6错误无法加载指定的元数据资源

时间:2014-08-26 20:45:07

标签: c# entity-framework entity-framework-4 entity-framework-5 entity

我首先使用实体​​框架6和"模型"在我的解决方案中,我分离了我的数据模型"将类转换为另一个项目,以便我可以添加对"数据模型的引用"课程没有暴露我的"数据模型上下文"和连接。 我不想将我的实体数据模型项目(特别是数据库上下文等)暴露给我的UI层。我有这个:

enter image description here

我现在已经成功地将我的自动生成的实体类与我的数据模型分开了,我尝试通过在项目Mapeo.BusinessEntity中更新实体或属性来更新它。

这是我在DatabaseLayer(Mapeo.DatabaseModel)

中的连接字符串
<connectionStrings>
   <add name="MapeoModelContainer" connectionString="metadata=res://*/MapeoModel.csdl|res://*/MapeoModel.ssdl|res://*/MapeoModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=raranibar\ral;initial catalog=Mapeo;user id=sa;password=*****;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

在我的服务层中,我将此连接字符串复制到App.config,我的问题是,当我想添加数据时,我有此消息:无法加载指定的元数据资源如何我可以解决这个问题吗?

enter image description here

更新 我找到了解决方案,我更改了App.Config中的连接字符串我在连接strign中替换的pretentation层&#34; *&#34;对于我的案例中的DataModel目录(Mapeo.DatabaseModel),现在这是我在图层演示中的连接字符串:

  <connectionStrings>
     <add name="MapeoModelContainer" connectionString="metadata=res://Mapeo.DatabaseModel/MapeoModel.csdl|res://Mapeo.DatabaseModel/MapeoModel.ssdl|res://Mapeo.DatabaseModel/MapeoModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=raranibar\ral;initial catalog=Mapeo;user id=sa;password=scugua;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

3 个答案:

答案 0 :(得分:2)

如果您要加载元数据文件等问题,请使用正确的路径更新您的connectionString。可以帮助其他人......

connectionString="metadata=res://DatabaseModel/MyModel...

答案 1 :(得分:0)

创建实体后,如果数据库编辑,实体不起作用

只要实体更新

这样:

enter image description here

如果此方法不起作用

最好这样做:

  1. 删除此标记:<add name="MapeoModelContainer" ...
  2. 删除 MapeoModel.edmx
  3. 添加 ADO.NET实体数据模型
  4. 然后使用向导创建连接和实体

      

    如果此方法不起作用,请发送 Inner exception

答案 2 :(得分:0)

当您将 EDMX 从一个项目复制到另一个项目时,您必须注意最初创建 EDMX 的文件夹的名称,因为它反映在 app.config(或 web.config)的连接字符串中与元数据资源相关。像这样:

//Initial model created in Folder1 in the original project
<add name="DataModelContainer" connectionString="metadata=res://*/Folder1.ServerModel.csdl|res://*/Folder1.ServerModel.ssdl|res://*/Folder1.ServerModel.msl;provider=System.Data.SqlClient;provider connection string= .../>

//Then manually copied to Folder2 in other project
<add name="DataModelContainer" connectionString="metadata=res://*/Folder2.ServerModel.csdl|res://*/Folder2.ServerModel.ssdl|res://*/Folder2.ServerModel.msl;provider=System.Data.SqlClient;provider connection string= .../>