C# NHibernate正在尝试在删除操作中将ID更新为null
首先我有这些实体:Persona、Paciente、Alergia、Cita和Consulta。 当我试图删除一个角色时,问题就出现了。我的数据库如下所示: 我目前正在与Persona和Paciente合作。这些是它们的映射和类:C# NHibernate正在尝试在删除操作中将ID更新为null,c#,xml,visual-studio-2010,nhibernate,C#,Xml,Visual Studio 2010,Nhibernate,首先我有这些实体:Persona、Paciente、Alergia、Cita和Consulta。 当我试图删除一个角色时,问题就出现了。我的数据库如下所示: 我目前正在与Persona和Paciente合作。这些是它们的映射和类: <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping assembly="Odontologia General Admin" namespace="Odontologia_Ge
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="Odontologia General Admin" namespace="Odontologia_General_Admin.Persistence.Entidades" xmlns="urn:nhibernate-mapping-2.2">
<class name="Persona" table="persona" lazy="true" >
<id name="Cipersona" column="ciPersona" />
<bag name="Cliente" cascade="all-delete-orphan">
<key column="ciCliente"/>
<one-to-many class="Cliente" />
</bag>
<bag name="Paciente" cascade="all-delete-orphan">
<key column="ciPaciente"/>
<one-to-many class="Paciente" />
</bag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="Odontologia General Admin" namespace="Odontologia_General_Admin.Persistence.Entidades" xmlns="urn:nhibernate-mapping-2.2">
<class name="Paciente" table="paciente" lazy="true" >
<id name="Cipaciente" column="ciPaciente" />
<bag name="CitasPaciente" table="cita" lazy="true" inverse="true" cascade="all-delete-orphan">
<key column="ciPaciente" />
<one-to-many class="Cita"/>
</bag>
<bag name="ConsultasPaciente" table="consulta" lazy="true" inverse="true" cascade="all-delete-orphan">
<key column="ciPaciente" />
<one-to-many class="Consulta" />
</bag>
<bag name="AlergiasPaciente" table="alergia_paciente" lazy="true" cascade="all-delete-orphan" inverse="true" >
<key column="ciPaciente"></key>
<many-to-many column="idAlergia" class="Alergia" />
</bag>
</class>
</hibernate-mapping>
SQL抛出异常,因为该列不能为null。在包映射中,您需要update=“false”在包映射中,您需要update=“false”将
not null=“true”
和update=“false”
添加到Paciente
集合映射中:
<bag name="Paciente" cascade="all-delete-orphan">
<key column="ciPaciente" not-null="true" update="false"/>
<one-to-many class="Paciente" />
</bag>
此外,您可能希望将集合映射为反向。将not null=“true”
和update=“false”
添加到Paciente
集合映射:
<bag name="Paciente" cascade="all-delete-orphan">
<key column="ciPaciente" not-null="true" update="false"/>
<one-to-many class="Paciente" />
</bag>
另外,您可能希望将集合映射为反向。我建议的方式是将集合映射为
inverse=“true”
-我建议的方式是将集合映射为inverse=“true”
-
<bag name="Paciente" cascade="all-delete-orphan">
<key column="ciPaciente" not-null="true" update="false"/>
<one-to-many class="Paciente" />
</bag>