2010-05-17 67 views
2

我正在研究一個項目,該項目按「客戶ID」對數據進行分組。當用戶登錄時,他們僅限於該客戶和該客戶。擴展SubSonic的IQueryable結構(通過LINQ?)

我與SubSonic3工作,什麼我有看起來像這樣:

public IEnumerable<Models.Foo> FindFoo(int userID, string searchText, int pageIndex, int pageSize) 
{ 
    return from item in Foo.GetPaged(pageIndex, pageSize) 
      where (item.Name.Contains(searchText) || 
        item.Description.Contains(searchText)) && 
        item.CustomerID == CurrentCustomerID() 
        select new Models.Foo(item); 
} 

我希望做的是抽象掉item.CustomerID行,因爲那會發生什麼爲查詢,沒有失敗,所以它會更簡單(和更安全)在一個地方做到這一點,並保證它會發生在任何地方。

所以,我的問題是:這可以做到,如果是這樣,如何?

+0

我希望你意識到你將要結束與該代碼的區分大小寫搜索 – CarneyCode 2011-03-12 15:29:57

回答

1

只要亞音速生成的類是部分的,你可以添加一些接口給他們...只需創建你與CustomerID屬性的接口(例如,將其命名爲ICusomerEntity),並對任何生成的類進行部分化,接口給他們...那麼僅僅使用了通用亞音速方法rerieve ICustomerEntity,而不是特定的類..

例如,您可以創建一個名爲GetCustomerEntity與約束T:ICustomerEntity泛型方法將與比較客戶編號與bascic查詢返回IQueriable登錄用戶之一..

希望它有幫助...

+1

不錯,我喜歡它。 – jvenema 2011-05-04 12:49:00