C# 保留有关已删除实体的信息
在我们的项目中,我们需要能够说出删除某个实体的人和时间。 因此,经过一些调查,我找到了下一个解决方案:C# 保留有关已删除实体的信息,c#,sql-server,nhibernate,C#,Sql Server,Nhibernate,在我们的项目中,我们需要能够说出删除某个实体的人和时间。 因此,经过一些调查,我找到了下一个解决方案: 将IsDeleted和DeletedBy列添加到每个表中,并在删除前进行设置(使用NH的delete事件)。但是这个解决方案有一些缺点:我们有很多sql视图,它们应该只处理未删除的数据。所以为了实现这一点,我们应该在每个表上写视图,这类似于一个过滤器。(其中IsDeleted=0) 删除前将每个实体序列化为xml,并将其存储在单个单独的表中,下一个表的结构为:Id | xml | Delete
Id | xml | Deleted By
使用#2,您可能还必须找出允许1个非软删除行的约束(基于唯一约束),但也允许违反唯一约束的软删除行的重复。是的,好时光。我也会考虑数据库链接,你也可以考虑存档表。如果您有一个可为空的
DeletedBy
列IsDeleted
,那么这是一个快速提示,因为DeletedBy
!=空表示删除。谢谢你的留言,本。Oleksii,数据库触发器不知道删除行的应用程序用户的任何信息,或者我没有想到你的评论。