2011-08-31 214 views
2

我不能得到在One-to-One關係與流利NHibernate的工作。我有User和UserDetails表,他們'共享'一個主鍵。我如何映射它們?流利NHibernate單向映射

這是我最新/最好的嘗試,這種失敗NHibernate.Id.IdentifierGenerationException:試圖從空分配ID一到一個屬性:用戶

用戶

protected UserMap() 
{ 
     Table("user"); 
     Id(x => x.Id) 
     .Column("user_key") 
     .GeneratedBy.GuidComb().UnsavedValue(Guid.Empty); 

     References(x => x.UserDetail) 
     .PropertyRef(x=>x.User) 
     .Column("user_key") 
     .Not.Insert().Not.Update().Cascade.All(); 

} 

UserDetail

protected UserDetailMap() 
{ 
    Table("user_detail"); 
    Id(x => x.Id).Column("user_key") 
     .GeneratedBy.Foreign("User") 
     .UnsavedValue(Guid.Empty); 

    References(x => x.User) 
     .Column("user_key") 
     .Not.Insert().Not.Update().Unique().Cascade.None(); 

} 
+0

丹,你有沒有得到這個工作?你遇到的問題與我所擁有的問題完全一樣。 – MushinNoShin

回答

3

試試這個

protected UserDetailMap() 
{ 
    Table("user_detail"); 
    Id(x => x.Id) 
     .Column("user_key") 
     .GeneratedBy.Foreign("User") 
     .UnsavedValue(Guid.Empty); 

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

這會創建異常 - NHibernate.Id.IdentifierGenerationException:試圖從null一對一屬性中分配id:用戶 – Dan

+0

是否引用集?你應該手動設置引用'user.Details = details; details.User = user;' – hazzik