2010-03-21 105 views
0

我正在將我的項目從Linq-to-SQL改爲使用實體框架。將擴展方法從linq-to-sql更改爲實體框架

我具有延伸通過LINQ創建的類的一些extention方法,我想知道如何改變它們與實體合作,而不是

下面是一個例子。

public static int GetPublishedArticlesCount(this Table<Article> source) 
    { 
     return GetPublishedArticles(source.Context as DataContext, null).Count(); 
    } 

此方法獲取已發佈文章的數量。而不是使用this Table<Article>,我應該用什麼來代替?

回答

2

您可能需要使用ObjectQuery<T>類。

public static int GetPublishedArticlesCount(this ObjectQuery<Article> source) 
+0

謝謝,這就是我以後的樣子。 – 2010-03-21 13:11:18

1

中的EntityFramework表<>(LINQ 2 SQL)的模擬是的ObjectQuery

0

正如前面的海報提到你可以使用ObjectQuery來獲得結果。

爲了使該方法更通用的擴展方法,任何類型的ObjectQuery &獲取計數或許這可能幫助:

public static int GetCount<T>(this ObjectQuery<T> query){ 
    return query.CreateQuery<T>(typeof(T).Name).Count(); 
} 

注:我從我的頭頂編寫這些代碼,可能有一些sytax錯誤...

HTH。