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

本文关键字:SQL 关联 列表 LINQ 应用于 查询 规则 是否 | 更新日期: 2023-09-27 18:20:12

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

当我们使用关联属性时,这会导致一个问题,如以下关系:

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

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

目前,我们只有一个普通的Linq-to-Sql配置。

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

我不熟悉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);
    }
}