【问题标题】:NHibernate delete operationNHibernate 删除操作
【发布时间】:2009-05-19 07:41:16
【问题描述】:

NHibernate 不执行删除操作的可能原因有哪些?

 public bool Delete(MyType model)
 {
     using (var session = _sessionFactory.OpenSession())
         session.Delete(model);
     return true;
 }

我尝试调用 session.Clear() 方法,但也没有用。我有点困惑。 :/

在这种情况下,MyType 只有 Id&Name。创建操作成功。

【问题讨论】:

    标签: nhibernate


    【解决方案1】:

    刷新会话,或将删除放入事务中并提交事务。

    NHibernate 将 - 默认情况下 - 尽量推迟 SQL 语句的执行。

    【讨论】:

    • 您能提供一些示例代码吗?在哪里可以找到最好的 NHibernate 文档?
    【解决方案2】:

    这有帮助...

    using (var session = _sessionFactory.OpenSession())
    {
        using (ITransaction tx = session.BeginTransaction())
        {
            session.Delete(model);
            session.Flush();
            tx.Commit();
        }
    }
    

    【讨论】:

    • 在本例中,可能不需要刷新,因为 NHibernate 会在事务提交时自行刷新。如果您想在提交之前“刷新”更改,或者如果您没有事务,则必须进行刷新。 nhforge.org 是一个关于 nhibernate 的有趣网站。
    • 是的...我注意到了。切换到“session.Delete(model);session.Flush();”没有交易。以前它在我的 IUserType Equals 方法实现中没有工作导致错误。感谢您清除这一点。 :)
    猜你喜欢
    • 2017-07-17
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多