我不知道如何使用 where 子句保存对象。我需要它来防止保存日期范围与其他对象重叠的对象。
public class TaskEvent
{
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
}
我想检查保存操作中标准的重叠,但我不知道如何。
有任何想法吗?
我不知道如何使用 where 子句保存对象。我需要它来防止保存日期范围与其他对象重叠的对象。
public class TaskEvent
{
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
}
我想检查保存操作中标准的重叠,但我不知道如何。
有任何想法吗?
您需要在代码中找出需要保存的对象,然后保存这些对象。这是业务逻辑,不应该被推入持久化操作中。IMO,即使 NH 可以支持。
您可以将 HQL 用于临时更新查询
session.CreateQuery("UPDATE TaskEvent SET ... WHERE ID = :ID and ...")
.SetInt32("ID", ID)
//.SetDateTime("", )
//.SetDateTime("", )
.ExecuteUpdate();
或者以一种更 NHibernate 的方式...获取所需的 TaskEvents(where 子句),更新它们的属性,并提交事务。
一种方法是重新确定您不想在代码中保存哪些 TaskEvent 对象并将它们从 ISession 中逐出,这样它们就不会被持久化。