加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 回滚由Fluent NHibernate中的PersistenceSpecifications创

发布时间:2020-12-15 08:06:40 所属栏目:百科 来源:网络整理
导读:我正在学习一些Fluent NHibernate,而且我遇到了半熟的PersistenceSpecification类. 我已经在单元测试中进行了设置以验证我的映射,并且它运行良好.但是,它在完成后会将记录留在数据库中.我尝试在事务中抛出它,所以我可以回滚更改,但是我收到一个错误: System
我正在学习一些Fluent NHibernate,而且我遇到了半熟的PersistenceSpecification类.

我已经在单元测试中进行了设置以验证我的映射,并且它运行良好.但是,它在完成后会将记录留在数据库中.我尝试在事务中抛出它,所以我可以回滚更改,但是我收到一个错误:

System.ObjectDisposedException:无法访问已处置的对象.
对象名称:’AdoTransaction’..

如果没有事务,我必须弄清楚记录的ID,检索它们并删除它们,这看起来并不优雅.

有什么想法吗?

编辑:

这是代码片段:

var factory = GetSessionFactory();
            using (var session = factory.OpenSession())
            using (var transaction = session.BeginTransaction())
            {
                new PersistenceSpecification<TimePeriod>(session)
                        .CheckProperty(x => x.EndDate,DateTime.Today)
                        .VerifyTheMappings();
                transaction.Rollback();
            }

解决方法

尝试在事务上设置IsolationLevel.这个片段对我有用:
using (var trans = _session.BeginTransaction(IsolationLevel.ReadUncommitted))
{
    new PersistenceSpecification<Event>(_session)
        .CheckProperty(p => p.StartTime,new DateTime(2010,1,1))
        .VerifyTheMappings();
    trans.Rollback();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读