2008-12-12 27 views
1

是否可以將常量where子句放到Linq to SQl映射中。添加常量,其中Linq to SQL映射

我真的不希望在查詢級別或我的數據訪問對象中這樣做,因爲這些目前是完全通用的,並希望保持這種方式來爲其他開發人員創造生活,並節省我不斷重複自己。

我已經解決了這一科林摹

回答

2

一種方法是使用返回的實體類型的一個IQueryable的擴展方法,然後用這個地方是需要的實體。

例如,如果我所有的自定義查詢只在馬感興趣的是沒有足夠的無效標誌設置,我將有一個擴展方法稱爲GetHorses:

public static IQueryable<Horse> GetHorses(this DataContext db) 
{ 
    return from h in db.Horses 
      where !h.Inactive 
      select h; 
} 

顯然,作爲該方法返回一個IQueryable ,你可以在任何使用它的方法中進行進一步的過濾/排序等。因此,而不是我的自定義查詢,看起來像這樣:

var deadHorses = from h in db.Horses 
       where !h.inactive && !h.Alive 
       select h; 

,他們是這樣的:

var deadHorses = from h in db.GetHorses() 
       where !h.Alive 
       select h; 
1

我相信你可以使用yourt的DataContext的選項屬性做到這一點。 檢查AssociateWith方法。