是否可以将查询规则应用于LINQ to SQL关联列表?

时间:2013-06-26 20:51:47

标签: c# sql linq

我们在所有表中都有标准的db列,其中一个是布尔型'Active'。因此,我们只是将Active属性设置为false,而不是物理删除数据。

当我们使用关联属性时会出现问题,如下面的关系:

User.Company.Name(Users.CompanyId - > Companies.Id)

如果有问题的公司被标记为Active = false,当Active属性的值为false时,是否可以在我的数据访问层中编写通用规则以排除列表中的项目?

目前我们只有一个vanilla Linq to Sql配置。

1 个答案:

答案 0 :(得分:1)

我不熟悉Linq-to-SQL(更多的是EF),但我想这可以解决,例如,所有具有该属性的类共享一个公共接口,例如:

public interface IHasActive
{
    bool Active { get; set; }
}

然后你可以实现一个扩展方法:

public static class IHasActiveExtensions
{
    public static IQueryable<T> ExcludeInactive<T>(this IQueryable<T> query)
        where T : IHasActive
    {
        return query.Where(m => m.Active);
    }
}