【问题标题】:EF4 and Connection StringEF4 和连接字符串
【发布时间】:2012-10-02 10:48:37
【问题描述】:

我有一个 3 层的项目。

1) Project.Data(EDMX 文件)
2) Project.Model (POCO)
3)Project.Console(控制台应用)

我已将连接字符串添加到Project.Console

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <connectionStrings>
        <add name="ProjectEntities" connectionString="metadata=res://*/Project.csdl|res://*/Project.ssdl|res://*/Project.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>
</configuration>

Project.Model 是使用 VS2010 中的EntityObject T4 模板构建的。它使用这个构造函数生成一个ObjectContext 类:

public ProjectEntities() : base("name=ProjectEntities", "ProjectEntities")
{
    this.ContextOptions.LazyLoadingEnabled = true;
    OnContextCreated();
}

我只是想在Project.Console 中实例化context 对象:

namespace Project.Console
{
    class Program
    {
        static void Main(string[] args)
        {
            ProjectEntities pe = new ProjectEntities();
        }
    }
}

但是,我在构造函数中收到MetadataException was unhandled 错误。声明Unable to load the specified metadata resource.

我进行了大量研究(谷歌搜索),发现这似乎是这些资源的链接问题。我似乎找不到解决办法。

感谢任何帮助。

【问题讨论】:

  • 我阅读了 Craig 建议的文章,但我仍然不确定我必须将 ...dll 文件引用放在哪里?我有一个和你一样的场景。我假设在 Project.Model 的 app.config 中?我的上下文和 pocos 在单独的项目中与 edm 文件分开,就像你的情况一样,Project.Model。
  • 在我的控制台项目中,我需要引用我的数据 (EDMX) 和模型项目。它还需要引用 System.Data.Entity。

标签: visual-studio-2010 c#-4.0 entity-framework-4 connection-string


【解决方案1】:

不久前我写了一篇冗长的guide to debugging this error

【讨论】:

    【解决方案2】:

    使用任何资源查看器(例如 RedGate .NET Reflector)打开您的程序集,并检查元数据资源的名称是否与您在 app.config 中指定的名称相同。

    【讨论】:

      【解决方案3】:

      请用您的 project.data 程序集替换 * ,如下所示

      <add name="ProjectEntities" connectionString="metadata=res://Project.Data/Project.csdl|res://Project.Data/Project.ssdl|res://Project.Data/Project.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-29
        • 1970-01-01
        • 2023-03-27
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        相关资源
        最近更新 更多