【问题标题】:NHibernate - how to save object with where clauseNHibernate - 如何使用 where 子句保存对象
【发布时间】:2008-12-07 08:09:11
【问题描述】:

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

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

我想在保存操作中检查条件是否重叠,但我不知道如何。

有什么想法吗?

【问题讨论】:

  • 嗯?这里没有太多信息可以继续。请给出更完整的代码示例。
  • 我需要这样的东西: UPDATE TaskEvent SET ... WHERE ID = @ID { 如何在此处添加一些条件}

标签: nhibernate save where


【解决方案1】:

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

【讨论】:

  • 是的,我明白,但这不是线索。当我调用 session.Update() 时,我需要知道如何将标准之类的东西放在哪里。例如:UPDATE TaskEvent SET ... WHERE ID = @ID { 如何在此处添加一些条件}
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-06
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      相关资源
      最近更新 更多