实体框架元数据问题

时间:2011-07-27 22:07:08

标签: entity-framework-4

使用EF 4.0。我有两个实体模型,都名为CoreEntities,但在不同的程序集和不同的名称空间中。

如果我有一个引用两个assmeblies的项目,EF似乎对要加载的正确元数据工件感到困惑。

具体来说,我得到的错误如下:

The EntitySet name 'CoreEntities.MyEntities' could not be found.

一旦删除对其中一个程序集的引用,错误就会停止发生。

我不确定这是否有所作为,但我使用以下代码生成我的权利连接字符串:

public static string BuildEntityConnectiongString(string entityContextName)
{
    //Format: metadata=res://*/{EntityContext}.csdl|res://*/{EntityContext}.ssdl|res://*/{EntityContext}.msl;provider=...
    string rawString = System.Configuration.ConfigurationManager.ConnectionStrings["GenericEntityConnectionString"].ConnectionString;
    return rawString.Replace("{EntityContext}", entityContextName);
}

EF如何确定在哪个程序集中查找嵌入的元数据?人们会认为它总是会首先看到包含模型的装配体,但显然这不是它的工作方式。

想法?

1 个答案:

答案 0 :(得分:1)

像往常一样,快速查看文档提供了答案:

http://msdn.microsoft.com/en-us/library/cc716756.aspx

基本上,res:// * /中的通配符告诉EF在所有已加载的程序集中搜索元数据。它找到匹配的第一个,它使用。

就我而言,它首先找到错误的。

对此的解决方法是修改我的BuildEntityConnectiongString函数(以及我正在使用的通用连接字符串)以允许我明确指定程序集名称。