0

我不知道如何使用 where 子句保存对象。我需要它来防止保存日期范围与其他对象重叠的对象。

public class TaskEvent
{
    public DateTime StartDate {get;set;}
    public DateTime EndDate {get;set;}
}

我想检查保存操作中标准的重叠,但我不知道如何。

有任何想法吗?

4

3 回答 3

2

您需要在代码中找出需要保存的对象,然后保存这些对象。这是业务逻辑,不应该被推入持久化操作中。IMO,即使 NH 可以支持。

于 2008-12-07T15:31:05.300 回答
1

您可以将 HQL 用于临时更新查询

session.CreateQuery("UPDATE TaskEvent SET ... WHERE ID = :ID and ...")
.SetInt32("ID", ID)
//.SetDateTime("", )
//.SetDateTime("", )
.ExecuteUpdate();

或者以一种更 NHibernate 的方式...获取所需的 TaskEvents(where 子句),更新它们的属性,并提交事务。

于 2010-01-18T16:04:38.783 回答
0

一种方法是重新确定您不想在代码中保存哪些 TaskEvent 对象并将它们从 ISession 中逐出,这样它们就不会被持久化。

于 2010-01-18T16:09:03.037 回答