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

c# – 映射Fluent NHibernate,其中主键也应该是外键,第1张

概述我有一个像这样的用户对象: public class User{ public Guid UserId { get; set; } public string UserName { get; set; } ...} 这是在nhibernate中流畅映射的: public class UserMap : ClassMap<User>{ public UserMa 我有一个像这样的用户对象:

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();        ...    }}

我正在尝试构建一个与用户对象分开的凭据块,因此密码和salt不会在用户类中携带,如下所示:

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

…但我无法弄清楚如何正确映射这个.最终,在数据库中,我希望在UserCredentials表中看到UserID列,它既是Users表的主键,也是Users表的外键. Users表应该没有对UserCredentials表的引用.我该怎么写那个ClassMap< UserCredential>类?

解决方法@H_403_30@ 这似乎是一对一的关系,因此将使用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,其中主键也应该是外键全部内容,希望文章能够帮你解决c# – 映射Fluent NHibernate,其中主键也应该是外键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1217438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存