指定鍵列假設我有以下兩類:避免雙重合作方案
public class User : Entity
{
public virtual IList<Item> Items { get; set; }
}
public class Item : Entity
{
public virtual User Owner { get; set; }
}
我創建了兩個映射類:
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
HasMany(x => x.Items);
}
}
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
References(x => x.Owner);
}
}
這將導致有列的表Item
UserId
和列OwnerId
。當我在HasMany
映射上使用KeyColumn("OwnerId")
時,它僅適用於OwnerId
列,但我想避免這種情況。有沒有辦法告訴NHibernate,使用由ItemMap
中的映射創建的列?
爲什麼我想避免明確指定列:
列名OwnerId
是根據屬性的名稱和一些規則自動生成的。如果我更改規則或屬性名稱,我需要記住也要更改KeyColumn
。所以,基本上,這不是重構保存。
您可以將屬性名稱更改爲用戶嗎?公共虛擬用戶用戶{get;組; }。你必須改變你的引用映射當然 –
@ColeW:嗯,將屬性更改爲用戶顯然會解決這個問題,但是該屬性的名稱不會像現在這樣好。 –
我同意,但我不認爲有乾淨的方式做你所要求的,否則。 –