請原諒尷尬的標題。我不完全確定如何將其詞組化我應該如何將一個實體映射到兩個表格
我有一個實體,我們稱之爲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中執行此操作?