Fluent NHibernate映射具有孤立子记录的父/子表

Fluent NHibernate映射具有孤立子记录的父/子表,nhibernate,foreign-key-relationship,fluent,outer-join,orphan,Nhibernate,Foreign Key Relationship,Fluent,Outer Join,Orphan,我刚接触流利的NHibernate和C#NET,正在努力解决这个问题 我有两张桌子: 审计: 审计顺序(主键), 用户代码(外键), 审计日期 用户名: 用户代码(主键), 用户名 审核表包含具有用户外键字段(用户代码)的审核记录问题是,一些用户记录已被删除,但这些用户的审核记录仍然存在(因此我在审核表中孤立了外键)。我想要的是一个包含审计顺序、审计日期和用户名的结果集(但如果是孤立的,用户名应该为空) 我正在使用以下映射,但我相信我需要更改用户名引用以创建外部联接。我不知道该怎么做 publi

我刚接触流利的NHibernate和C#NET,正在努力解决这个问题

我有两张桌子:

审计: 审计顺序(主键), 用户代码(外键), 审计日期

用户名: 用户代码(主键), 用户名

审核表包含具有用户外键字段(用户代码)的审核记录问题是,一些用户记录已被删除,但这些用户的审核记录仍然存在(因此我在审核表中孤立了外键)。我想要的是一个包含审计顺序、审计日期和用户名的结果集(但如果是孤立的,用户名应该为空)

我正在使用以下映射,但我相信我需要更改用户名引用以创建外部联接。我不知道该怎么做

public class AuditMap : ClassMap<Audit>
{
    public AuditMap()
    {
        Id(x => x.AuditSeq).Column("audit_seq").GeneratedBy.Assigned();
        Map(x => x.AuditDate).Column("audit_date");
        References(x => x.UserName).Column("user_code");
    }
}
公共类审核映射:类映射
{
公共审计地图()
{
Id(x=>x.AuditSeq).Column(“audit_seq”).GeneratedBy.Assigned();
映射(x=>x.AuditDate)。列(“审计日期”);
引用(x=>x.UserName).Column(“用户代码”);
}
}

用户名
应映射到实体(类
用户名
?我将使用
用户
来区分其属性
用户名
)。然后可以在审计中作为参考。在C中#

用户
映射

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.UserCode).Column("user_code").GeneratedBy.Assigned();
        Map(x => x.UserName).Column("user_name");
        ...
    }
}
现在我们有了
Audit
,它引用了
User
。它将忽略某些引用用户丢失的事实(
.NotFound.ignore()
)。如果有,我们的
UserName
属性将返回其名称

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.UserCode).Column("user_code").GeneratedBy.Assigned();
        Map(x => x.UserName).Column("user_name");
        ...
    }
}
public class AuditMap : ClassMap<Audit>
{
    public AuditMap()
    {
        Id(x => x.AuditSeq).Column("audit_seq").GeneratedBy.Assigned();
        Map(x => x.AuditDate).Column("audit_date");
        References(x => x.User).Column("user_code")
             .NotFound.Ignore();
    }
}