c# – 映射Fluent NHibernate,其中主键也应该是外键
发布时间:2020-12-16 01:49:11 所属栏目:百科 来源:网络整理
导读:我有一个像这样的用户对象: public class User{ public Guid UserId { get; set; } public string UserName { get; set; } ...} 这是在nhibernate中流畅映射的: public class UserMap : ClassMapUser{ public UserMap() { Id(x = x.UserId).Column("UserId
我有一个像这样的用户对象:
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>类? 解决方法
这似乎是一对一的关系,因此将使用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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |