我遇到了Nhibernate問題,它爲Cascade.None()中的一個實體持續生成HasOne關係。我的領域模型涉及以下4個類別。流利的Nhibernate Cascade.None()導致HasOne外鍵關係不被持久化
public class Project
{
public virtual int Id {get;set;}
public virtual IList<ProjectRole> Team { get; protected set; }
}
public class ProjectRole
{
public virtual int Id { get; set; }
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
public class Role
{
public virtual int Id { get; set; }
public virtual string Value { get; set; }
}
public class User
{
public virtual int Id { get; protected set; }
public virtual string LoginName { get; set; }
}
所以基本上我們有項目,其中有一個ProjectRoles列表可以從Team屬性中獲得。每個ProjectRole將用戶鏈接到他們在該項目上扮演的特定角色。
我正在嘗試爲這些實體設置以下級聯關係。
project.HasMany<ProjectRoles>(p=> p.Team).Cascade.All()
projectRole.HasOne<Role>(r => r.Role).Cascade.None()
projectRole.HasOne<User>(r => r.User).Cascade.SaveUpdate()
我用流利的NHibernate的覆蓋設置如上級聯,但我發現,行
projectRole.HasOne<Role>(r => r.Role).Cascade.None()
是導致ProjectRole.Role財產不被保存到數據庫。我已經診斷出這是在查看由Nhibernate生成的SQL,我可以看到ProjectRoles表中的「Role_id」列從未在更新或插入時設置。
我也使用
projectRole.HasOne<Role>(r => r.Role).Cascade.SaveUpdate()
嘗試,但失敗也是如此。不幸的是,將Cascade.All()留在Cascade.All()不是一個選項,因爲當我嘗試刪除項目角色時,系統會刪除角色對象。
任何想法如何設置Cascade.None()的ProjectRole->角色關係與突破持久性。
完美的是這個問題。我剛剛假設HasOne是你在關係的孩子方面會做的。謝謝。 – AndrewSwerlick