"实体类型不是当前上下文模型的一部分"当项目包含多个EDMX文件时,将引发错误

ern*_*est 7 c# entity-framework ef-database-first

我首先使用数据库,我有一个switch看起来像这样的语句:

switch (site)
{
    case Site.One:
        using (OneContext one = new OneContext())
            return one.OrganizationObjects.SingleOrDefault(x => x.u_Name == orgName)?.g_org_id;
    case Site.Two:
        using (TwoContext two = new TwoContext())
            return two.OrganizationObjects.SingleOrDefault(x => x.u_Name == orgName)?.g_org_id;
    default:
        throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

两个数据库非常相似,几乎都有相同的模型.

如果我删除"两个"EDMX文件并注释掉条件,那么OneContext可以正常工作.
如果我将TwoContext EDMX文件添加到项目并再次运行代码,则"OneContext"代码在尝试查询时失败OrganizationObjects.

我确保每个上下文都使用正确的连接字符串,但仍会出现此错误:

在此输入图像描述

ern*_*est 4

解决方法:更改两个相同类之一的属性。

EF 匹配类名和类属性。因此,我只需更改其中一个 EF 对象的属性名称,错误就消失了。

正如 @Entrodus 对其他答案之一的评论:

仅当两个类具有相同的名称和相同的参数集时,才会发生 EF 冲突。

CLR 类型到 EDM 类型的映射对于 EF 6 和 5 不明确?