Include内部的SingleOrDefault将引发以下错误:-Include路径表达式必须引用在类型上定义的导航属
本文关键字:引用 类型 导航 定义 路径表达式 SingleOrDefault 内部 Include 错误 -Include | 更新日期: 2023-09-27 18:24:05
我正在开发一个asp.net mvc 4 web应用程序,我使用的是Entity Framework 5。我有以下模型方法:
public SDJoin AllFindSDDetails_J(int id)
{
var IT360Resource = entities.Resources
.Include(a => a.ComponentDefinition)
.Include(a => a.ResourceLocation.SiteDefinition.SDOrganization)
.Include(a => a.ResourceLocation.SiteDefinition.AccountDefinitions1.SingleOrDefault().SDOrganization)
.Include(a => a.ResourceState)
.SingleOrDefault(a2 => a2.RESOURCEID == tmsSD.Technology.IT360ID);
但是当调用这个方法时,我得到以下异常:
Include路径表达式必须引用导航属性在类型上定义。使用虚线路径进行参考导航属性和用于集合导航的Select运算符属性。参数名称:路径描述:未处理的在执行当前web请求期间发生异常。请查看堆栈跟踪以了解有关错误和它在代码中的来源。
异常详细信息:System.ArgumentException:Include路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性和选择集合导航属性的运算符。
我通过替换这个修复了它:
.Include(a => a.ResourceLocation.SiteDefinition.AccountDefinitions1.SingleOrDefault().SDOrganization)
带有:
.Include(a => a.ResourceLocation.SiteDefinition.AccountDefinitions1.Select(aa=>aa.SDOrganization))
所以我用Select(aa=>aa...)
代替了SingleOrDefault()
我的问题是:为什么我不能在.Include()
中定义SingleOrDefault()
第二个问题:为什么我没有得到任何编译错误?我的意思是,我成功地构建了我的项目,但在运行时,当调用该方法时,我得到了异常。
感谢
您设置了映射吗?我在这里看不到任何映射。您可能需要通过fluent或基于属性的映射实体映射