我正在开发一个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()
第二个问题:为什么我没有得到任何编译错误?我的意思是我成功构建了我的项目,但在运行时,我在调用该方法时遇到了异常。
由于