【问题标题】:Mapping a GUID property as Foreign Key to other entity by NHibernate mapping-by-code通过 NHibernate 代码映射将 GUID 属性作为外键映射到其他实体
【发布时间】:2014-12-07 23:31:21
【问题描述】:

在 NHibernate 中使用按代码映射/符合标准的方法时,如何创建类映射以便将 Person.CountryId 创建为我的 Country 实体的外键?

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

【问题讨论】:

    标签: c# nhibernate orm nhibernate-mapping


    【解决方案1】:

    如果一个聚合根有对另一个聚合根的引用,那很好。这个想法是不允许您引用其他聚合的部分。

    你想做的事情并不容易。有人需要知道将哪个 Guid 放入 CountryId 列。如果您的应用程序无法回答这个问题,那么没有人可以。

    您可能会尝试创建一个包含国家和人之间映射的类:

    public class CountryToPersonMapping
    {
        public Guid Find(Person entity)
        {
        }
    
        public void AddMapping(Person person, Country country)
        {
        }
    }
    

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

    【讨论】:

    • 谢谢!在这种特殊情况下,我绑定到现有模型,因此我试图通过映射而不是在 NHibernate 的映射文件中使用 来解决这个问题(我理解这是一种解决方案)。
    猜你喜欢
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    相关资源
    最近更新 更多