NHibernate - como guardar objetos con cláusula where
-
19-08-2019 - |
Pregunta
No sé cómo guardar el objeto con la cláusula where. Lo necesito para evitar guardar objetos con un rango de fechas superpuesto en otros.
public class TaskEvent
{
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
}
Quiero verificar la superposición de criterios dentro de la operación de guardar pero no sé cómo.
¿Alguna idea?
Solución
Puede usar HQL para consultas de actualización ad hoc
session.CreateQuery("UPDATE TaskEvent SET ... WHERE ID = :ID and ...")
.SetInt32("ID", ID)
//.SetDateTime("", )
//.SetDateTime("", )
.ExecuteUpdate();
o para hacerlo de una manera más NHibernate ... busque los TaskEvents requeridos (cláusula where), actualice sus propiedades y confirme la transacción.
Otros consejos
Debe averiguar en el código qué objetos deben guardarse y luego guardarlos. Esta es la lógica de negocios y no debe ser empujada a las operaciones de persistencia. OMI, incluso si NH pudiera apoyar eso.
Un enfoque sería volver a determinar qué objetos de TaskEvent no desea guardar en el código y desalojarlos de ISession para que no se persistan.