我首先使用EF4 CPT4代码,然后我设置了我的ObjectContext以返回IObjectSet,这样我就可以模拟并测试我的回购。但是,我现在注意到我无法使用.Include()方法进行急切加载,就像我可以使用ObjectSet一样。
有没有办法使这项工作?
编辑: 我添加了这个扩展方法:
public static IQueryable<TSource> Include<TSource>(this IQueryable<TSource> source, string path)
{
var objectQuery = source as ObjectQuery<TSource>;
return objectQuery == null ? source : objectQuery.Include(path);
}
它确实添加了Include()方法,但我现在收到此错误:
LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[PostHope.Core.DomainObjects.SiteAnnouncement] Include[SiteAnnouncement](System.Linq.IQueryable`1[PostHope.Core.DomainObjects.SiteAnnouncement], System.String)' method, and this method cannot be translated into a store expression.
答案 0 :(得分:1)
EF团队回复:
这是CTP4的一个已知问题,Include是ObjectSet上的一个实例方法,但是当你的set被输入为IObjectSet时,你实际上是在CTP4中包含的IQueryable上使用了一个扩展方法。此扩展方法不适用于已编译的查询,但我们将在下一版本中尝试并支持此功能。
〜罗文