Tengo dos clases. Uno se llama Employee
y el otro EmployeeDetails
que tiene una relación cero o uno con su clase primaria 'Employee'
. En otras palabras, hay ocasiones en las que necesitamos almacenar datos adicionales en esta clase 'EmployeeDetails'
, pero esta no es necesariamente la norma. La estructura db es bastante simple con el 'EmployeeDetails' compartiendo el mismo ID que su padre.nHibernar, uno a cero o una relación aflicciones
El problema que tengo es eliminar la clase 'EmployeeDetails'
de la clase 'Employee'
, hubiera imaginado que establecer el objeto a nulo hubiera hecho las sesiones de trucos y enrojecimiento, pero el registro en la base de datos no se elimina.
Mis asignaciones son ...
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="StudioBusinessLayer.Data.Structure.Employee, StudioBusinessLayer" table="tblEmployee" lazy="false">
<id name="ID" column="ID" type="int">
<generator class="native" />
</id>
<property name="Name" column="Name" not-null="true" type="string" length="100" />
<!-- etc -->
<one-to-one constrained="false" name="EmployeeDetails" class="StudioBusinessLayer.Data.Structure.EmployeeDetails, StudioBusinessLayer" cascade="all-delete-orphan" />
</class>
</hibernate-mapping>
... y para la clase EmployeeDetails ...
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="StudioBusinessLayer.Data.Structure.EmployeeDetails, StudioBusinessLayer" table="tblDetails" lazy="false">
<id name="ID" column="DetailsID" type="int">
<generator class="foreign">
<param name="property">Employee</param>
</generator>
</id>
<property name="Address" column="Address" not-null="false" type="string" length="1000" />
<property name="ContactEmail" column="ContactEmail" not-null="false" type="string" length="255" />
<property name="ContactName" column="ContactName" not-null="false" type="string" length="255" />
<property name="ContactTelephone" column="ContactTelephone" not-null="false" type="string" length="255" />
<property name="ZipCode" column="ZipCode" not-null="true" type="string" length="100" />
<many-to-one name="Employee" class="StudioBusinessLayer.Data.Structure.Employee, StudioBusinessLayer" column="DetailsID" insert="false" update="false"></many-to-one>
</class>
</hibernate-mapping>
Las inserciones y actualizaciones funcionan bien, pero he estado luchando para encontrar la interruptor que hace que esto funcione para eliminaciones.
Cualquier ayuda o sugerencias son bien recibidas ...
No hay preocupaciones, afortunadamente esto puede ser manejado por la capa de negocios, así que, aunque la implementación de nHibernate no es buena, al menos está encapsulada. Aclamaciones – SeanCocteau