2014-12-07 41 views
0

在NHibernate中使用映射代码/一致性方法时,如何创建一个类映射,以便将Person.CountryId创建为我的国家实体的外键?通过NHibernate按照代码映射一个GUID属性作为外键到其他实体

当加载Person实体时,我做而不是想直接在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

如果聚合根具有对其他聚合根的引用,那就好了。这个想法是,你不能参考其他聚合的部分。

你想做什么并不容易。有人需要知道将哪个Guid放入CountryId列。如果你的申请不能回答这个问题,那么没有人可以。

你可以尝试什么是有一个类,将包含国家和个人之间的映射:

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

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

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

+0

谢谢! 在这种特殊情况下,我绑定了一个现有的模型,因此我试图通过映射而不是在NHibernate的映射文件中使用来解决这个问题(我知道这是一种解决方案)。 – ForestC 2014-12-09 19:39:51