我们在所有表中都有标准的db列,其中一个是布尔型'Active'。因此,我们只是将Active属性设置为false,而不是物理删除数据。
当我们使用关联属性时会出现问题,如下面的关系:
User.Company.Name(Users.CompanyId - > Companies.Id)
如果有问题的公司被标记为Active = false,当Active属性的值为false时,是否可以在我的数据访问层中编写通用规则以排除列表中的项目?
目前我们只有一个vanilla Linq to Sql配置。
答案 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);
}
}