Nhibernate 标记“;删除“;而不是使用Castle ActiveRecord进行物理删除
在我目前的项目中,我们(向我)提出了一个相当不寻常的要求。客户机希望所有删除过程都标记一个标志,而不是从数据库表中实际删除记录。乍一看很容易。我只有零钱Nhibernate 标记“;删除“;而不是使用Castle ActiveRecord进行物理删除,nhibernate,activerecord,castle,Nhibernate,Activerecord,Castle,在我目前的项目中,我们(向我)提出了一个相当不寻常的要求。客户机希望所有删除过程都标记一个标志,而不是从数据库表中实际删除记录。乍一看很容易。我只有零钱 public void DeleteRecord(Record record) { record.DeleteAndFlush(); } public IList GetAllRecords() { Record.FindAll().ToList(); } 到 但在我有一点时间再考虑之后。我发现这个小小的改变会给我的级联设
public void DeleteRecord(Record record)
{
record.DeleteAndFlush();
}
public IList GetAllRecords()
{
Record.FindAll().ToList();
}
到
但在我有一点时间再考虑之后。我发现这个小小的改变会给我的级联设置带来巨大的问题。因为我对活动唱片业务还很陌生。我不相信自己会简单地将所有cascaenum.Delete更改为cascadenum.SaveUpdate。所以,我在这里寻找一些输入
1) 该标志是否是一种标志,而不是一种常见的物理要求
2) 如果问题1的答案是肯定的,那么我相信NHibernate内置了一些东西来处理这个问题。有人能告诉我什么是解决这类问题的正确方法吗
感谢您的输入。这称为软删除,非常常见。关于最佳实践存在一些争论-请查看最近的这篇博客文章:这被称为软删除,它非常常见。关于最佳实践存在一些争论-请查看最近的博客帖子:这很常见,被称为“”。对于NHibernate来说,这是非常常见的,称为“”。对于NHibernate来说,这是一个相对常见的请求,有时实现它至少有两个原因:
这是一个相对常见的请求,有时实现它至少有两个原因:
谢谢你的快速回复。我很高兴地发现,即使是像ayende这样的大人物也和我一样担心:)谢谢你的快速回复。很高兴发现,即使是像ayende这样的大人物也和我有类似的担忧:)谢谢Mauricio,我试图将你的回答标记为答案,但系统只允许一个答案。所以我必须长期坚持下去,美国海关与边境保护局的答复大约提前了1分钟。谢谢你的回答。所以这里有一个向上的投票,至少给你一些接受的代表,如果不是勾号本身:-)谢谢毛里西奥,我试着把你的回答标记为答案,但系统只允许一个答案。所以我必须长期坚持下去,美国海关与边境保护局的答复大约提前了1分钟。谢谢你的回答。所以这里有一个向上的投票,至少给你一些接受的代表,如果不是勾选本身的话:-)
public void DeleteRecord(Record record)
{
record.Deleted = true;
record.UpdateAndFlush();
}
public IList GetAllRecords()
{
Record.FindAll().Where(x=>x.Deleted==false).ToList();
}