C# 实体框架异常:找到不明确的匹配项

C# 实体框架异常:找到不明确的匹配项,c#,entity-framework,entity-framework-5,C#,Entity Framework,Entity Framework 5,我得到一个错误: 找到不明确的匹配项 在.Add上执行此代码期间 var db = new NexusEntities(); db.Reports.Add(mmr); 通过谷歌搜索,如果有两个名称相同但名称空间不同的类,这似乎是一个问题。据我所知,情况并非如此。。。发生此错误还有其他原因吗?或者有没有办法判断它找到了哪两个参数?这是EF中的一个“弱点”。当相同的属性出现在类/子类型层次结构中时会发生这种情况 很可能您有一个隐藏字段。i、 e.已重新定义的属性。 当EF查找a属性时,它也必须使

我得到一个错误:

找到不明确的匹配项

在.Add上执行此代码期间

var db = new NexusEntities(); 
db.Reports.Add(mmr);
通过谷歌搜索,如果有两个名称相同但名称空间不同的类,这似乎是一个问题。据我所知,情况并非如此。。。发生此错误还有其他原因吗?或者有没有办法判断它找到了哪两个参数?

这是EF中的一个“弱点”。当相同的属性出现在类/子类型层次结构中时会发生这种情况

很可能您有一个隐藏字段。i、 e.已重新定义的属性。 当EF查找a属性时,它也必须使用类型/基本树来查找该属性。但是,如果它在树中两次找到它,它会将其解释为重复。EF不只是使用最低最具体的覆盖

因此,使用EF不可能进行属性隐藏


检查您的类,某个属性将在某处出现两次。

虽然这可能是一种不太可能出现的情况,但我们运行的是
EF Core 1.0
,它只有一个版本的
Include()
方法。。。在版本1.1中,Microsoft添加了第二个实现(字符串版本),由于我们动态调用此方法,因此在将
EF核心更新为1.1

后出现此错误
mmr
的类型是什么?什么是
报告的类型
?报告是
报告的一种类型
,它是一个抽象类。mmr类型为
MonthlyMarketingReport
,其基类为
报告
,如果实体报告和MonthlyMarketingReport中没有代码,则很难看到。你在隐藏财产等方面做了什么令人不安的事吗?这就是全部错误吗?这是编译错误还是运行时错误?@CodeCaster整个错误,运行时。有没有一种简单的方法可以找到哪个属性?@kirsten。。。并不是说我知道ofl确实发现编译器警告帮助我隔离了我的类似问题was@kirsteng以及其他遇到此问题的人,一种解决问题属性的简单方法:当抛出异常时,转到调用堆栈窗口,右键单击->显示外部代码,右键单击->显示参数值,然后查看堆栈中的提示。我的是排名第三的(propertyOrFieldName):
System.Core.dll!System.Linq.Expressions.Expression.PropertyOrField(System.Linq.Expressions.Expression={System.Linq.Expressions.UnaryExpression},字符串propertyOrFieldName=“Country_State”)未知
为了帮助找到导致问题的属性,我使用了Linqpad,刚刚开始列出每种类类型的前100名。这将最终显示导致问题的类。