我们使用pesonal设计来存储修改过的行。对于我们需要保留的数据,我们使用2个表;第一个使用不更改的字段,第二个使用软删除。
+----------+ +---------------+
| TableBase| | Table |
+==========+ +===============+
| Id | | TableId |
| FieldA | | Id |
+----------+ | ReplacedBy |
| FieldB |
| FieldC |
+---------------+
现在我们有了当前的课程:
public abstract class TableBase
{
public virtual int Id { get; protected set; }
public virtual string FieldA {get; set;}
}
public class Table: TableBase
{
public virtual int TableId { get; protected set; }
// ReplacedBy is null: not replaced
public virtual int? ReplacedBy { get; set; }
public virtual string FieldB {get; set;}
public virtual string FieldC {get; set;}
}
有没有办法用Fluent NHibernate进行映射?
<加入>可能是更好的解决方案,但是没有办法告诉我们只有在ReplacedBy
为空时才需要加载。
映射忽略Where,并且子类中不存在。