EF4和连接字符串

时间:2010-10-21 07:32:47

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

我有一个3层项目。

1)Project.Data(EDMX文件)
2)Project.Model(POCO's)
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>

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

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

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

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 个答案:

答案 0 :(得分:8)

我一会儿写了一篇冗长的guide to debugging this error

答案 1 :(得分:3)

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

答案 2 :(得分:0)

请用您的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" />