gpt4 book ai didi

c# - 映射 Fluent NHibernate,其中主键也应该是外键

转载 作者:行者123 更新时间:2023-11-30 14:16:09 25 4
gpt4 key购买 nike

我有一个像这样的用户对象:

public class User
{
public Guid UserId { get; set; }
public string UserName { get; set; }
...
}

这在 nhibernate 中被流畅地映射:

public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.UserId).Column("UserId");
Map(x => x.UserName).Not.Nullable();
...
}
}

我正在尝试构建一个与用户对象分开的凭证 block ,因此密码和盐不会像这样在用户类中携带:

public class UserCredential
{
public User User { get; set; }
public byte[] Password { get; set; }
public string Salt { get; set; }
}

...但我不知道如何正确映射它。最终,在数据库中,我希望看到 UserIdUserCredentials 中的列表,它既是 Users 的主键又是外键 table 。 Users表格不应引用 UserCredentials table 。我怎么写ClassMap<UserCredential>类(class)?

最佳答案

这似乎是一个一对一关系,因此将使用 FNH 中的 HasOne 进行映射。

例子

    public UserCredentialMap()
{
Id(x => x.Id)
.Column("UserId")
.GeneratedBy.Foreign("User");

HasOne(x => x.User).Constrained();
}

你也可以像这样映射它:

public UserCredentialMap()
{
Id(x => x.Id, "UserId");

References(x => x.User, "UserId")
.Not.Update()
.Not.Insert();
}

关于c# - 映射 Fluent NHibernate,其中主键也应该是外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183909/

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