2010-08-07 145 views
2

我首先使用EF4 CPT4代碼,並且我已經設置了我的ObjectContext以返回IObjectSet,因此我可以模擬和測試我的回購。但是,我現在注意到,我無法使用.Include()方法進行加載,就像我可以使用ObjectSet一樣。實體框架4 IObjectSet包括

有沒有辦法讓這個工作?

編輯: 我添加了這個擴展方法:

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

你是怎麼調用Include方法的? – Jonathan 2010-10-04 23:26:35

+0

從擴展方法(來自Julie Lerman的博客http://thedatafarm.com/blog/data-access/agile-entity-framework-4-repository-part-5-iobjectset/)也在她的新書中。還沒有找到解決方案。這篇文章是相同的問題:http://stackoverflow.com/questions/2655886/iobjectset-include-extension-method-errors-with-compiledquery – Paul 2010-10-05 17:22:02

回答

1

由EF團隊迴應:

這是CTP4的一個已知問題,Include是ObjectSet上的一個實例方法,但是當您的set被鍵入爲IObjectSet時,您實際上是在IQ上使用擴展方法包含在CTP4中的ueryable。這種擴展方法不適用於編譯查詢,但我們將在下一個版本中嘗試並支持這一點。

〜Rowan