实体框架4 IObjectSet包含

时间:2010-08-07 23:40:33

标签: entity-framework-4

我首先使用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. 

1 个答案:

答案 0 :(得分:1)

EF团队回复:

这是CTP4的一个已知问题,Include是ObjectSet上的一个实例方法,但是当你的set被输入为IObjectSet时,你实际上是在CTP4中包含的IQueryable上使用了一个扩展方法。此扩展方法不适用于已编译的查询,但我们将在下一版本中尝试并支持此功能。

〜罗文