通过NHibernate按代码映射将GUID属性作为外键映射到其他实体

时间:2014-12-07 23:31:22

标签: c# nhibernate orm nhibernate-mapping

在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; }
}

1 个答案:

答案 0 :(得分:0)

如果聚合根具有对其他聚合根的引用,则可以。我们的想法是不允许您引用其他聚合的部分内容。

您想要做的事情并不容易。有人需要知道将哪个Guid放入CountryId-column。如果您的申请无法回答该问题,则无人可以。

您可能尝试的是拥有一个包含国家与人之间映射的类:

public class CountryToPersonMapping
{
    public Guid Find(Person entity)
    {
    }

    public void AddMapping(Person person, Country country)
    {
    }
}

然后找到一种方法将此类的实例传递给NHibernate中的自定义类型以设置正确的列。可能使用服务定位器。