首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nHibernate每个请求的会话在会话结束前删除和提交

nHibernate每个请求的会话在会话结束前删除和提交
EN

Stack Overflow用户
提问于 2014-11-03 01:36:36
回答 1查看 402关注 0票数 0

我正在使用c#中的网格视图,并且正在尝试删除一行。我正在使用nHibernate和session-per-request。我的问题是,当我删除并执行row命令时,我可以删除db中的记录,但当我尝试重新加载数据源时,因为删除尚未提交,所以我似乎是在同一会话中获取原始数据。

谁能告诉我处理这种情况的最佳策略是什么?

非常感谢!侧边

EN

回答 1

Stack Overflow用户

发布于 2014-11-03 05:07:01

您应该运行两个事务。在WebForms中,您的代码可能如下所示:

代码语言:javascript
复制
using (var transaction = Session.BeginTransaction())
{
    var foo = Session.Load<Foo>(fooId);
    Session.Delete(foo);

    transaction.Commit();
}

using (var transaction = Session.BeginTransaction())
{
    gridView.DataSource = Session.List<Foo>(fooId);
    gridView.DataBind()

    transaction.Commit();
}

就像Radim Kohler所说的,如果你是用MVC中更现代的RESTful方式来做这件事,你应该让客户端对你的应用编程接口进行两次调用--一次删除调用,然后是一次列表调用。不过,本金是一样的-您需要两个事务。

我不太确定为什么NHibernate在您的场景中不能使用AutoFlush,但是如果您根本没有打开事务,那么您可能会发现NHibernate的AutoFlush特性不能正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26702277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档