SQL服務器:試圖刪除刪除NHibernate的收集與檢查約束
表名稱:爸爸 領域:身份證
表名:媽媽 領域:身份證
表名: 場:ID,IdDad,IdMom
兒童檢查約束:IdDad不爲空或IdMom不爲空
NHibernate的映射類
public class ChildBase
{
public int Id { get; set; }
}
public class DadChild : ChildBase
{
public int IdDad { get; set; }
}
public class MomChild : ChildBase
{
public int IdMom { get; set; }
}
public class Dad
{
public int Id { get; set; }
// Cascade = All, Table = "Child", ColumnKey = "Id"
public IList Children { get; set; }
}
如果我有爸爸反對兒童收集有3個孩子我刪除,並刪除兒童
foreach (Child child in Dad.Children)
{
child.Delete();
}
Dad.Children.Clear();
Data.Flush();
我得到的約束違反錯誤,因爲試圖刪除兒童在從父親那裏,約束表明Child表不能有IdDad和IdMom爲空。
NHibernate的嘗試做這樣的更新:
幼兒更新設置IdDad = NULL其中Id = XXX
由於IdMom目前爲空,也不能IdDad和IdMom空,我該怎麼刪除從NHibernate的兒童收集?
CNC中
<class name="Dad, MyAssembly" table="Dad" lazy="true">
<id name="Id" access="property" column="Id" type="Int32" unsaved-value="0">
<generator class="native">
</generator>
</id>
<bag name="Children" access="property" table="Child" lazy="true" cascade="all" >
<key column="IdDad" />
<one-to-many class="Child, MyAssembly" />
</bag>
</class>
發表您的'Dad' – 2012-03-26 15:30:05