我将 NHibernate/FluentNhibernate 与 AutoMapping 配置一起使用,并且在某些关系的外键方面遇到了麻烦。尤其是那些导航属性名称与其指向的类型名称不同的地方:
public class Country
{
public virtual string Code { get; set; }
public virtual string Name { get; set; }
public virtual Currency DefaultCurrency { get; set; }
}
public class Currency
{
public virtual string Code { get; set; }
public virtual decimal Rate { get; set; }
public virtual IList<Country> Countries { get; set; }
}
在导航属性名称与名称类型DefaultCurrency
不同的国家实体的情况下。Currency
NHibernate 的自动映射会猜测 Country 表将具有以下外键:
DefaultCurrency_id
: 对应的关系Country.Currency
Currency_id
: 对应的关系Currency.Countries
如何告诉自动映射关系Currency.Countries
可以用DefaultCurrency_id
键来表示,导致只有 Country 表的一个键是外来的:
DefaultCurrency_id
: 对应于和的Country.Currency
关系Currency.Countries