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