【问题标题】:referencing edmx in mvc project在 mvc 项目中引用 edmx
【发布时间】:2011-10-08 11:00:55
【问题描述】:

我在 MVC 项目中有一个 EF 连接字符串,如下所示:

connectionString="metadata=res:///Models.db.csdl|res:///Models.db.ssdl|res://*/Models.db.msl;provider =System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=SystemName;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient"

一切都很好,直到我添加了第二个项目并引用了包含 edmx 的 MVC 项目,但在运行时我得到:

指定的元数据路径无效。有效路径必须是现有目录、扩展名为“.csdl”、“.ssdl”或“.msl”的现有文件,或标识嵌入资源的 URI。

我已经阅读了一个又一个帖子,但我不知道如何正确引用 MVC 项目中的元数据。有人可以指出我正确的方向吗?我不想创建一个如此具体的连接字符串,它在部署和调试期间会中断。

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    资源格式为:

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

    懒惰的方法是使用通配符 res://*/bah.msl。这将从 bin 目录加载模型/映射文件,调用程序集以及引用的程序集。

    在你的情况下:

    res:///Models.db.csdl|res:///Models.db.ssdl|res://*/Models.db.msl
    

    不正确,试试:

    res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl
    

    完整的字符串:

    connectionString="metadata=res://*/Models.db.csdl|res://*/Models.db.ssdl|res://*/Models.db.msl;provider=System.Data.SqlClient;provider connection string='Data Source=localhost;Initial Catalog=SystemName;Integrated Security=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient"
    

    或者你可以使用更快的绝对引用(但我假设这对你来说会更痛苦):

    Metadata=res://<DLL>, <Version>, neutral, <SN>/Models.db.csdl|Models.db.ssdl|Models.db.msl
    

    【讨论】:

    • 当我尝试 //*/ 字符串 VS 崩溃。 Microsoft Visual Studio 遇到问题,需要关闭。
    • 你从上面使用了我的connectionString?请确保您看到我将您的 provider connection string=" 替换为 provider connection string='
    猜你喜欢
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    相关资源
    最近更新 更多