1

我们所有的表中都有标准的 db 列,其中之一是布尔值“活动”。因此,我们没有物理删除数据,而是将 Active 属性设置为 false。

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

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

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

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

4

1 回答 1

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);
    }
}
于 2013-06-26T21:20:36.533 回答