【问题标题】:moving EDMX file to new project caused: System.Data.MetadataException: Unable to load the specified metadata resource将 EDMX 文件移动到新项目导致:System.Data.MetadataException:无法加载指定的元数据资源
【发布时间】:2010-12-25 19:49:30
【问题描述】:

我有一个 ASP.NET MVC 2 项目。 我已经在保存模型的类库项目上创建了 edmx 文件。

现在我创建了另一个名为 shared 的类库并将 edmx 文件移到那里。 解决了一些问题,一切都编译好了,但是在运行时找不到连接字符串资源。

我已将 Web.Config 的 ConnectionString 部分复制到主文件、旧类库 app.config 文件和新类库 app.config 文件中。

还是出现这个错误:

System.Data.MetadataException:无法 加载指定的元数据 资源。

第 75 行:公共 myProjdb(): base("name=myProjdb", "MyProjdb")

在 MyProj.Designer.cs 文件中。

任何想法如何解决这个问题?

有没有更好的方法来存储连接字符串数据?

【问题讨论】:

    标签: asp.net-mvc-2 entity-framework-4 connection-string


    【解决方案1】:

    如果您使用包含程序集名称的连接字符串,您应该能够在其他项目中使用相同的模型。在 web.config 中的连接字符串中,尝试更改连接字符串中的 *,从

    metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=... 
    

    到这样的事情:

    metadata=res://ClassLibrary1/Model1.csdl|res://ClassLibrary1/Model1.ssdl|res://ClassLibrary1/Model1.msl;provider=System.Data.SqlClient;provider connection string=...
    

    【讨论】:

    • 您复制了 edmx 文件,还是移动了它?它是在项目的根目录中,还是在子文件夹中?
    • 我已将它放在子文件夹中 - 也许这就是问题所在?检查。
    • 好的,问题出在子文件夹上。它不需要更改为程序集名称(将其移回 *)。有没有办法把它放在子文件夹中?
    • 如果模型在子文件夹中,文件夹名称应该在连接字符串中,例如://ClassLibrary1/Subfolder.Model1.csdl|...。我认为这是因为该文件夹成为模型所在的命名空间的一部分。
    • 也解决了我的问题...谢谢!
    猜你喜欢
    • 2014-10-09
    • 2013-04-12
    • 1970-01-01
    • 2023-03-10
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多