1
考慮類A,B和C,A和B都有一個Cs的集合。我想將這些集合映射到不同的表,所以我有表A_C和B_C。我試着做:FluentNhibernate,地圖類到多個表
public class AMap : ClassMap<A>
{
Public AMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x => x.Cs).Table("A_C");
}
}
public class BMap : ClassMap<B>
{
Public BMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x => x.Cs).Table("B_C");
}
}
public class CMap : ClassMap<C>
{
Public CMap()
{
Id(x => x.Id).GeneratedBy.Identity();
}
}
..(有一些額外的屬性),但它仍然創建一個名稱爲「C」的單個表。那麼對此的正確方法是什麼?
如果您接受來自NHibernate的預失真,則不需要指定KeyColumn。它只是想出來。像A_Id和B_Id。這通常是它爲外鍵生成列名稱的方式。 –
哦,這樣理解正確;根本不可能從映射中獲得自動生成的表格,而且在使用自定義表格名稱時不能通過模式導出來獲取表格。 – bretddog
呃......我不確定。它應該實際上在工作。爲什麼不是,需要額外的配置?我不知道。但看起來像上面的設置應該肯定會得到它來生成單獨的表。關於模式導出的事情就是它有點像一次性的事情。一旦它產生你的數據庫,你會想保留該腳本的副本。這是一件非常方便的事情,因爲當您確實決定使用它時,您將始終獲得一個能夠準確反映數據模型最新版本的腳本。但只要你的桌子不變,你就很好。 –