指定键列假设我有以下两类:避免双重合作方案
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:嗯,将属性更改为用户显然会解决这个问题,但是该属性的名称不会像现在这样好。 –
我同意,但我不认为有干净的方式做你所要求的,否则。 –