Include中的SingleOrDefault将引发以下错误: - Include路径表达式必须引用类型

时间:2015-11-24 00:50:58

标签: c# asp.net asp.net-mvc asp.net-mvc-4 entity-framework-5

我正在开发一个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运算符   属性。参数名称:path描述:未处理   在执行当前Web请求期间发生异常。   请查看堆栈跟踪以获取有关错误的更多信息   它起源于代码。

     

异常详细信息:System.ArgumentException:Include路径   expression必须引用在类型上定义的导航属性。   使用虚线路径作为参考导航属性和选择   收集器导航属性的运算符。

我通过替换它来修复它:

  .Include(a => a.ResourceLocation.SiteDefinition.AccountDefinitions1.SingleOrDefault().SDOrganization)

with:

  .Include(a => a.ResourceLocation.SiteDefinition.AccountDefinitions1.Select(aa=>aa.SDOrganization))

所以我将SingleOrDefault()替换为Select(aa=>aa...)

我的问题是:为什么我不能在SingleOrDefault()

中定义.Include()

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

由于

0 个答案:

没有答案