Fluent nHibernate引用由Id(而不是对象)

本文关键字:对象 nHibernate 引用 Id Fluent | 更新日期: 2023-09-27 18:31:26

我有一个类User,它在系统的核心模块中:

public class User
{
    public virtual int Id {get; set;}
    public virtual string Name {get; set; }
}

我还有一个类 Company,它在系统的另一个模块中,没有对核心模块的引用:

public class Company
{
    public virtual int Id {get; set;}
    public virtual string Name {get; set; }
    public virtual int OwnerUserId {get; set;}
}

如何创建 Company.OwnerUserId 的映射作为数据库中 User.Id 的外键?再次注意:此映射不能引用"User"类。

Fluent nHibernate引用由Id(而不是对象)

这是一种解决方法,我不确定架构更新将如何生成外键,而无需映射引用以获取元数据。

您可以创建映射到同一表的新实体:

public class LocalUser
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}
public class Company
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual LocalUser OwnerUserId { get; set; }
}
public class LocalUserMap : ClassMap<LocalUser>
{
    public LocalUserMap()
    {
        Table("[User]");
        Id(x => x.Id).GeneratedBy.Identity();
        Map(x => x.Name);
    }
}