在我当前的项目中,我们收到了一个相当不寻常的请求(对我来说)。客户端希望所有删除过程都标记一个标志,而不是从数据库表中物理删除记录。乍一看,它看起来很容易。我只有零钱
public void DeleteRecord(Record record)
{
record.DeleteAndFlush();
}
public IList GetAllRecords()
{
Record.FindAll().ToList();
}
到
public void DeleteRecord(Record record)
{
record.Deleted = true;
record.UpdateAndFlush();
}
public IList GetAllRecords()
{
Record.FindAll().Where(x=>x.Deleted==false).ToList();
}
但是,在我得到一点时间并再次思考之后。我发现这个小小的改变会在我的级联设置中造成很大的问题。因为我对 Active Record 业务还很陌生。我不相信自己会简单地将所有 CascaeEnum.Delete 更改为 CascadeEnum.SaveUpdate。所以,我在这里寻找一些输入。
1)标志是标志而不是物理要求是常见的标志吗?
2) 如果问题 1 的答案是肯定的,那么我相信 NHibernate 中内置了一些东西来处理这个问题。有人能告诉我解决这类问题的正确方法是什么吗?
感谢您的输入。