2008-12-12 41 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方法。