我无法将 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 能够跟踪集合中的更改。”
我没有得到的是“详细信息”属性是一个自定义类型,它继承了 ObservableCollection<T>,它是一个 ICollection<T>,那么为什么声明它必须实现 ICollection<T> 的异常呢?
如果有人对此有任何启示,我将不胜感激,谢谢。