在我的项目中,我不使用物理删除,我只对所有表使用逻辑“软删除”。如何避免在实体框架中重复相同
我用这个条款为所有查询:
.Where(row => row.IsDeleted == false)
我想办法,以避免重复此where
子句中的所有查询。
我有这样的方法来获取数据:
public new IDbSet<TEntity> Set<TEntity>() where TEntity : class
{
return base.Set<TEntity>();
}
,我这样称呼它:
_categories = _uow.Set<Category>();
我怎样才能做到这一点?
第一理念:
添加一个基类,并把Deleted
列在从这个基类继承的所有类。这是一个好方法吗?
我使用UnitOfWork
和代码优先。
难道你不觉得这会更“安全”显式过滤你的记录,而不是神奇的数据层_swallowing_你的一些数据吗?特别是如果有多个人正在/将要处理此代码。我想这将很难达到由此导致的意外行为的底部。 – romeozor
我想如果我在'Service'层中的所有查询中使用'where',它可能是一个我忘记的地方,它是一个系统的bug,并且在软件工程中重复一个代码并不好 –