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()

第二个问题:为什么我没有得到任何编译错误?我的意思是,我成功地构建了我的项目,但在运行时,当调用该方法时,我得到了异常。

感谢

Include内部的SingleOrDefault将引发以下错误:-Include路径表达式必须引用在类型上定义的导航属

您设置了映射吗?我在这里看不到任何映射。您可能需要通过fluent或基于属性的映射实体映射

使用映射来专门设置对象关系