我不知道如何使用where子句保存对象。我需要它来防止保存对象的日期范围与其他日期重叠。
public class TaskEvent
{
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
}
我想在保存操作中检查重叠标准,但我不知道如何。
有什么想法吗?
答案 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中逐出它们,以便它们不会被持久化。