请原谅尴尬的标题。我不完全确定如何将其词组化我应该如何将一个实体映射到两个表格
我有一个实体,我们称之为A
。每周从电子表格中拉出A
,然后存储在表格中。电子表格是累积的,因为从6周前开始的数据包含在1周前的电子表格中。
现在,有时这些数据将是相同的,不需要改变。有时候需要改变。我想让主表充满最新的数据。也就是说,随着实体更新,过时的实体被删除,并且新的实体被插入。
当A
实体发生了变化,我创建了一个Conflict
,使得该Conflict
都有一个GUID,冲突发现的日期时间,注释和老实体的副本(这样我们就可以看到发生了什么变化等等)以及相关的冲突。相关的冲突工作正常,但我想知道如何坚持旧的实体。
我可以做一个组件映射,但这只是爆炸表,我相信我可以以更“漂亮”的方式做到这一点。
我Conflict
映射如下:
public class ConflictAMapping : ClassMap<Conflict<A>>
{
public ConflictAMapping()
{
Id(c => c.Guid);
Map(c => c.DateOfConflict);
Map(c => c.Comment);
HasMany(c => c.RelatedConflicts)
.KeyColumn("ConflictKey")
.Inverse()
.Cascade.All()
.Table("RelatedConflicts");
References<A>(c => c.OriginalEntity)
.Column("FK_IssueNumber")
.Cascade.All();
}
}
而且我A
映射
public class GSFEntityMapping : ClassMap<GSFEntity>
{
public GSFEntityMapping()
{
... unrelated properties blah blah ...
HasMany(g => g.Conflicts).KeyColumn("theKey")
.Table("Conflicts")
.AsBag().Cascade.All()
}
}
的Conflict
表看起来像这样:
Guid|DateOfConflict|CommentFK_IssueNumber|ConflictKey|theKey
的A
表没有任何与其中的冲突有关的东西(j实际属性)。
那么如何映射旧的实体?我是否必须为旧的A
实体生成一个新类,或者有什么方法可以在Fluent/NHibernate中执行此操作?