gpt4 book ai didi

nhibernate - 流利的 NHibernate 映射父/子表与孤立的子记录

转载 作者:行者123 更新时间:2023-12-04 05:20:53 25 4
gpt4 key购买 nike

我是 Fluent NHibernate 和 C#.NET 的新手,正在努力解决这个问题。

我有两个表:

审核 :
audit_seq(主键),
user_code(外键),
审计日期

用户名 :
user_code(主键),
用户名

审计表包含具有用户外键字段 (user_code) 的审计记录。 问题是一些用户记录已被删除,但这些用户的审计记录仍然存在(所以我在审计表中孤立了外键)。我想要的是带有 audit_seq、audit_date 和 user_name 的结果集(但如果是孤立的 user_name 应该为空)。

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

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");
}
}

最佳答案

username应该映射到一个实体(类 UserName?我将使用 User 来区分它的属性 UserName)。然后它可以在审计中用作引用。在 C# 中

public class Audit
{
...
public virtual User User { get; set; }
public virtual string UserName
{
get { return User != null ? User.UserName : string.Empty ;}
}
}
User映射
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.UserCode).Column("user_code").GeneratedBy.Assigned();
Map(x => x.UserName).Column("user_name");
...
}
}

然后我们可以调整 Audit这样映射:
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();
}
}

所以现在我们有了 Audit引用 User .它会忽略一些引用的用户丢失的事实( .NotFound.Ignore() )。如果有的话,我们的 UserName属性将返回其名称。

关于nhibernate - 流利的 NHibernate 映射父/子表与孤立的子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com