【发布时间】:2016-06-05 18:10:59
【问题描述】:
我正在努力解决来自Entity Framework - Include Multiple Levels of Properties的问题
鉴于这些类:
class Survey {
public virtual List<QuestionBase> Questions {get;set;}
...
}
class QuestionType1 : QuestionBase {
public List<Answers> Answers {get;set;}
...
}
class QuestionType2 : QuestionBase {
...
}
我正在尝试获取用于深度克隆的实例,但无法使用以下方法获取答案:
Survey originalEntity = DBSet
.Include(s => s.Questions)
.Include(s => s.Questions.OfType<QuestionType1>().Select(q => q.Answers))
.AsNoTracking()
.Single( e => e.Id == sourceId );
使用这个我得到错误'包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 Select 运算符。 参数名称:路径'
【问题讨论】:
-
Answers是否定义在QuestionBase或SimpleQuestion中? -
它在 QuestionType1 中
-
所以您想选择一个调查,并为特定问题类型加载特定答案?
-
我想要 1 份调查问卷并加载所有问题。对于 QuestionType1 类型的问题,我希望加载所有答案
-
如果最终结果是您试图克隆一个对象,我可以建议将其序列化为 string/xml/binary 然后再返回吗?
标签: c# entity-framework linq