[英]Mapping Fluent NHibernate where the primary key should also be a foreign key
我有一個像這樣的用戶對象:
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
列, UserCredentials
是Users
表的主鍵,也是Users
表的外鍵。 Users
表應該沒有對UserCredentials
表的引用。 我該如何編寫ClassMap<UserCredential>
類?
這似乎是one-to-one
關系,因此將使用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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.