在NHibernate中使用按代码/遵循映射的方法时,如何创建类映射,以便将Person.CountryId创建为我的Country实体的外键?
当加载Person实体时,我 not 想直接在person实体中使用Country实体(因为它们是不同的聚合根)但只是通过ID引用它并且仍然具有FK关系在数据库中定义。
public class Person : Entity, IEntity
{
public Guid CountryId { get; protected set; }
}
public class Country : Entity, IEntity
{
public string Name { get; protected set; }
}
答案 0 :(得分:0)
如果聚合根具有对其他聚合根的引用,则可以。我们的想法是不允许您引用其他聚合的部分内容。
您想要做的事情并不容易。有人需要知道将哪个Guid放入CountryId-column。如果您的申请无法回答该问题,则无人可以。
您可能尝试的是拥有一个包含国家与人之间映射的类:
public class CountryToPersonMapping
{
public Guid Find(Person entity)
{
}
public void AddMapping(Person person, Country country)
{
}
}
然后找到一种方法将此类的实例传递给NHibernate中的自定义类型以设置正确的列。可能使用服务定位器。