将Constant where子句添加到Linq到SQL映射

时间:2008-12-12 11:10:53

标签: linq-to-sql

是否可以将一个常量where子句放到Linq到SQl映射中。

我真的不想在查询级别或我的数据访问对象中执行此操作,因为这些目前是完全通用的,并且希望保持这种方式为其他开发人员提供生活并且让我不断地重复自己。

科林G

2 个答案:

答案 0 :(得分:2)

我解决这个问题的一种方法是使用一个返回实体类型的IQueryable的扩展方法,然后在需要该实体的任何地方使用它。

例如,如果我的所有自定义查询只对没有设置Inactive标志的Horses感兴趣,我会有一个名为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 :(得分:1)

我相信您可以使用yourt DataContext的Options属性执行此操作。 检查AssociateWith方法。