代码之家  ›  专栏  ›  技术社区  ›  Dustin Laine

EF4和连接字符串

  •  7
  • Dustin Laine  · 技术社区  · 14 年前

    我有一个三层的项目。

    1)项目数据(EDMX文件)
    2)项目模型(POCO)
    3)项目控制台(控制台应用)

    我已将连接字符串添加到 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 是使用 EntityObject VS2010中的T4模板。它产生了一个 ObjectContext 类,使用此构造函数:

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

    我只是想举例说明 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.

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

    感谢您的帮助。

    3 回复  |  直到 12 年前
        1
  •  8
  •   Craig Stuntz    14 年前

    我写了一篇长篇 guide to debugging this error 一会儿回来。

        2
  •  3
  •   Devart    14 年前

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

        3
  •  0
  •   Bill the Lizard    12 年前

    请将*替换为您的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" />