[英]EntityException thrown executing EF6 query with .Includes()
我无法将EF4解决方案迁移到EF6。
我们使用T4模板来生成具有基于ObservableCollection <T>的导航属性的持久性无知POCO。
因为我们的ObjectContext实现将实体集公开为IObjectSet <entity>,所以我们失去了ObjectQuery的Include()方法,因此必须在IQueryable上使用扩展方法来重新获得它,如下所示:
public static IQueryable<TSource> Include<TSource>(this IQueryable<TSource> source, string path)
{
IQueryable<TSource> returnValue = source;
var objectQuery = source as ObjectQuery<TSource>;
if (objectQuery != null)
{
returnValue = objectQuery.Include(path);
}
return returnValue;
}
更新了使用EF6的解决方案后,我们现在在使用.Include()执行查询时看到以下System.Data.Entity.Core.EntityException:-
“类型为'DataEntities.Parent'的实体的导航属性'Details'必须实现ICollection <T>,以便Entity Framework能够跟踪集合中的更改。”
我没有得到的是'Details'属性,它是一个继承自ObservableCollection <T>的自定义类型,而ObservableCollection <T>是ICollection <T>,那么为什么声明它必须实现ICollection <T>的异常呢?
如果有人对此有任何了解,我将不胜感激,谢谢。
您的班级必须遵循的规则才能启用更改跟踪代理,这些规则非常严格和严格。 这限制了您定义实体的方式,并阻止了私有属性甚至私有设置器之类的东西的使用。
规则是:
这个答案是为什么不能使用实现的解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.