NHibernate - 如何使用where子句保存对象

时间:2008-12-07 08:09:12

标签: nhibernate save where

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

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

或以更多NHibernate方式执行...获取所需的TaskEvents(where子句),更新其属性并提交事务。

答案 2 :(得分:0)

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