首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

回滚Fluent NHibernate中PersistenceSpecifications创建的记录

回滚Fluent NHibernate中PersistenceSpecifications创建的记录是指在进行单元测试时,需要对使用Fluent NHibernate框架创建的数据库记录进行回滚操作,以便在测试完成后恢复数据库的原始状态。

Fluent NHibernate是一个用于将.NET对象映射到数据库的框架,它提供了一种更简洁、更易读的方式来配置NHibernate映射。PersistenceSpecifications是Fluent NHibernate中的一个类,用于测试映射的正确性。

在进行单元测试时,通常需要对数据库进行操作以验证代码的正确性。在测试过程中,可能会创建、修改或删除数据库记录。为了确保测试不会影响其他测试或生产环境,需要在测试结束后恢复数据库的原始状态。回滚操作可以通过使用数据库事务来完成。

在Fluent NHibernate中,可以使用以下代码来创建一个PersistenceSpecifications对象,并使用数据库事务来回滚创建的记录:

代码语言:csharp
复制
var spec = new PersistenceSpecification<MyEntity>(session);
spec.CheckProperty(x => x.Name, "John Doe");
spec.CheckProperty(x => x.Age, 30);
using (var transaction = session.BeginTransaction())
{
    var myEntity = spec.Build();
    session.Save(myEntity);
    transaction.Rollback();
}

在上面的代码中,使用PersistenceSpecifications对象来创建一个MyEntity对象,并使用数据库事务来保存该对象。在测试完成后,使用transaction.Rollback()方法回滚事务,从而恢复数据库的原始状态。

总之,回滚Fluent NHibernate中PersistenceSpecifications创建的记录是一种常见的单元测试方法,可以确保测试不会影响其他测试或生产环境。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Git 提交到 GitHub commit 记录

在我们使用 Git 时候,有时候会遇到想要回滚到某次提交之前场景。...在这时,我们只需要按照如下步骤操作,即可实现这个目的: 首先,找到想要回退到某个版本版本号,查看版本号命令为git log,例如 如上图所示,找到想要回退版本号之后,在本地 Git 仓库执行如下命令...: git reset --hard 或者git reset --soft 对于上述两条命令,仅有--hard和--soft参数不同,两者区别是: --hard,抛弃当前工作区修改...--soft,回退到之前版本,但保留当前工作区修改,可以重新提交 执行完本地之后,还需要执行如下命令,同步远端内容: git push origin 在执行上述命令时候,可能会提示本地版本落后于远端版本...,因此我们还需要在上述命令中加上--force参数: git push origin --force 到这里,我们就可以把本地和远端代码都回退到某一个指定版本了。

69630

headresetrevertrebase代码全解:git提交记录背后原理

本地仓库(.git):在工作区中有个隐藏目录.git,这就是 Git 本地仓库数据库。工作区项目文件实际上就是从这里签出(checkout)而得到,修改后内容最终提交后记录到本地仓库。...随后,Git 会创建一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照指针。还包含了作者姓名和邮箱、提交时输入信息以及指向它父对象指针。...^主要是控制merge之后回退方向HEAD~才是回退步数通过命令行删除远程和本地提交记录常见代码场景场景:仅在工作区修改时当文件在工作区修改,还没有提交到暂存区和本地仓库时,可以用 git...之所以这样强调,是因为 "git reset" 会抹掉历史,用在已经 push 记录上会带来各种问题;而 "git revert" 用于某次提交内容,并生成新提交,不会抹掉历史。...命令是否抹掉历史适用场景git reset是,历史将消失本地未push记录git revert否,历史记录保留,后重新生成提交记录已push内容git reset某次提交确保还没其他人提交之前

93121

Fluent NHibernate之旅

ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开框架,而最常用而且强大,非Hibernate了(NetNHibernate),网上文档非常多,不过在博客园,介绍NHibernate...本篇内容: 1、初识Fluent NHibernate(简称Fluent) 2、使用NHibernateFluent创建ISessionFactory 3、传统方式和Fluent对比。...下面我们在代码创建一个SessionFactory,NHibernate建议我们在一个应用程序中使用一个数据库一个SessionFactory,这里我们用单数据库,代码如下: public static...,这里我们先介绍一下,如果用Fluent结合传统配置文件,来创建SessionFactory(后面的代码会简略,只修改上面其中创建方法)。...().Configure()).BuildSessionFactory(); } 哈哈,简单吧,我们使用了原先配置文件,然后用Fluent进行创建,而且我们可以为配置文件没有的配置进行扩展。

1K60

连贯NHibernate 1.0正式发布

连贯NHibernateFluent NHibernate) 是通过编程方式而不是使用XML配置文件创建NHibernate映射API。...它目标是在项目中运用NHibernate时减少所遇到困难,提供更好可读性、可测试性和编译时安全性。...连贯NHibernate降低了复杂性,并进一步加强了约定胜于配置原则,即任何一个映射最常用设置是默认。 除了编译时检查外连贯NHibernate还为你映射测试提供了一个健壮API。...Wiki上有教程告诉怎么用,园子里inday几篇文章可以先看一下: [原创]Fluent NHibernate之旅 [原创]Fluent NHibernate之旅二--Entity Mapping...[原创]Fluent NHibernate之旅(三)—继承 codeproject上也有一篇针对RC文章:Fluent NHibernate and Linq2NHibernate – Demo Project

61670

Fluent NHibernate 之旅 导航篇

ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开框架,而最常用而且强大,非Hibernate了(NetNHibernate),网上文档非常多,不过在博客园,介绍NHibernate...非常少,李哥NHibernate系列(NHibernate之旅)不失为一个经典,对于新手我们,需要完全掌握还需要很长一段路,对于新手来说,最初配置是非常头大一件事情,好在老赵推荐一个开源框架...Fluent NHibernate,有了它,我们可以完全脱离配置文件,不过博客园中介绍Fluent NHibernate文章非常少,而且官方文档也还没有完全,所以对于我来说也就一点一点摸索起来,这也激起了我写这个笔记欲望...,废话不说了,下面就介绍Fluent NHibernate,大家也一起来体验一下Fluent Nhibernate快感吧。...继承 [原创]Fluent NHibernate之旅(四)-- 关系(上) [原创]Fluent NHibernate之旅(四)-- 关系() [原创]Fluent NHibernate之旅(四

64970

Fluent NHibernate之旅二--Entity Mapping

接着上一篇,今天我们说说ORMMapping。如果你要体验NHibernate强大,首先你就要学会配置,包括SessionFactory和Mapping配置。...产品有产品ID,产品名,价格,创建时间。今天内容不涉及关联关系,所以我们今天暂且不说Order。 好了,接下来开始我们代码演示阶段。...映射做好了,接下来我们在NHibernate把映射加到配置。...为了接下来方便,我把FluentMapping都生成到我传统方式Mapping目录,加入到项目,设置成嵌入资源,一切都为了以后教程,换句话说以后教程,我一般都会使用Fluent来进行映射...前几天开篇“Fluent NHibernate之旅一”,反响不是很好,或许大家用NHibernate真的很少,或许我写不够好,或许。。。。

98590

Fluent NHibernate之旅(四)-- 关系(上)

经过了前面三篇介绍,相信大家对Fluent NHibernate已经有一定了解了,在我们学习Fluent 也已经进入了RTM版本。...这次版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量功能,在每天更新,也看到了大量单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了。...Mapping 今天我们将说一下ORMR映射,我们现在数据库大多都是关系型数据库了,所以可以说关系在我们数据库设计也是非常重要部分,NHibernate也非常重视这一块,但在传统方式,配置就比较麻烦...,不是说我们Fluent能简单,只是传统方式xml看上去不太美观,而Fluent这种代码式方式,更能符合我们Developer习惯。...支持,虽然编译通过,但在创建ISessionFactory时候,却会抛出异常,因为NHibernate不支持one-to-oneLazy特性,也就是说NHibernate不支持一对一延迟加载。

1.2K60

MySQL 重做日志,日志以及二进制日志简单总结

其中重做日志和日志与事务操作息息相关,二进制日志也与事务操作有一定关系,这三种日志,对理解MySQL事务操作有着重要意义。 这里简单总结一下这三者具有一定相关性日志。...日志(undo log) 作用: 保存了事务发生之前数据一个版本,可以用于,同时可以提供多版本并发控制下读(MVCC),也即非锁定读 内容: 逻辑格式日志,在执行undo时候,仅仅是将数据从逻辑上恢复至事务之前状态...对应物理文件: MySQL5.6之前,undo表空间位于共享表空间,共享表空间默认名称是ibdata,位于数据文件目录。...因此可以基于binlog做到类似于oracle功能,其实都是依赖于binlog日志记录。...什么时候产生: 事务提交时候,一次性将事务sql语句(一个事物可能对应多个sql语句)按照一定格式记录到binlog

3.3K70

Fluent NHibernate RC 1.0 --升级内容

Fluent NHiberante(FNT) RC 1.0 已经在上个星期发布了,其中很多东西被废弃,有些方法改进,还有一些命名更贴切,虽说不是很完美,但已经做非常完善了,如果大家在使用,发现bug...Fluent NHibernate Release Notes 1.0 : http://wiki.fluentnhibernate.org/Release_notes_1.0 FNT在映射时候,分为...Fluent Mapping(手动)和Auto Mapping(自动)两种方式,我在我Fluent系列”中一直使用是手动方式,我觉得相对应好控制,而且也让我同时能更好学习NHibernate。...Fluent Mapping 1、修改一些方法名:把一些繁琐方法名改相对简单而不失其含义。...总结 其实还有一些内容,不过我英文不太好,不太懂,大概就是一些如果创建约束,创建规则等等,呵呵,我不太会,等大家帮忙了。

62350

努力通知型分布式事务操作,以及方案特点和优势

在努力通知型分布式事务,当发生异常时,可以通过以下步骤来处理事务操作:事务管理器收到异常通知后,首先会发送回请求给参与事务各个分支。...分支事务接收到请求后,会执行本地事务操作,确保数据一致性。事务管理器等待所有分支事务返回回结果。如果所有分支事务都成功,事务管理器将返回回滚成功消息给应用程序。...如果有任何一个分支事务失败,事务管理器将返回回失败消息给应用程序。应用程序可以根据滚成功或失败消息进行相应处理,如记录日志、进行错误处理等。...分支事务在执行过程必须具有一致性保证。如果分支事务执行中间结果已经对其他分支事务或外部系统产生了影响,则操作可能无法完全还原数据一致性。事务管理器必须能够正确地接收异常通知并发送回请求。...在分布式系统,异常通知和请求传递必须可靠,以确保所有参与事务分支都能够正确地执行操作。以上是努力通知型分布式事务处理事务一般流程和前提条件。

21321

Fluent NHibernate之旅(四)-- 关系(

接着上一篇,我们继续讲解ORM关系。在数据库设计,我们最多打交道,要算一对多关系了,延续我们示例,我们来讲解一下一对多关系。...Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们映射一切都变得如此简单,先来看看Model吧,用户订单列表,对于用户来说,暂时是不需要排序,所以我们可以使用ISet作为Order...我们在Output,能看到NHibernate生成Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。...如果您在使用Fluent Nhibernate时候也遇到了问题,可以及时与我联系或求助于Fluent Google Groups。 应“亦续缘”要求,我把代码整理了下,发上来,便于大家学习。

689100

Fluent NHibernate之旅(三)-- 继承

经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定了解了,FluentNHibernate实际就是对 NHibernate 映射一定扩展,我们能完全利用强类型...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 在OOP,继承作为OO重要特性,如果NHibernate没有对它支持,...,一定看到过了,其实就是把父类、子类所有属性放到一个表,这样做好处就是我们不需要建立其他表,一张表格全搞定,但缺点也显而易见,在属性少情况下或许没有什么,但是多了以后,我们维护、扩展就变得相对麻烦...在子类,我们必须制定对应标识符值,这里又出现败笔了,只能设定string类型,My God,变相SetAttribute,我觉得这个已经脱离了Fluent称号了(在RC升级介绍已经说明)。...总结 这次说了一下继承映射方式,其实很早就写好了,正好遇到Fluent NHibernate发布了RC版,所以用了一些时间去学习了下,总的来说,这次升级呢非常好,可能会存在更多bug,但不影响我们正常使用

64480

NHibernate 代码映射实体类

NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外一种映射方式, 由于推出时间比较晚, 所以资料相对比较少, 而且与社区版...Fluent Mapping 和 Attribute Mapping 不同, 有其独特设计风格。...下面就通过一个实例来说明怎么使用 NHibernate 自带代码映射。 实体关系 要映射类关系图如下: ?...mapper.CompileMappingForAllExplicitlyAddedEntities(); config.AddMapping(mapping); 导出到数据库 也可以向 xml 映射那样, 将映射导出到数据库, 创建对应数据表以及表关系...Attribute Mapping 相比, 对原来 POCO 实体类没有污染 (Attribute) ; NHibernate 自带, 可以说是一等公民, 而 Fluent Mapping 是第三方维护

86810

Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发

Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate书中也相应推荐了使用FN来进行映射配置,之前写FN之旅至今还有很多人会来私信我问题,说来惭愧,从...SchemaExport创建数据库及其架构 .BuildSessionFactory(); } private static void...用ExposeConfiguration方法委托NhibernateSchemaExport来创建数据库架构,相信很多NH玩家都会用吧。...刚我们测试报错,是因为EmployeeName是个UserName类,NhibernateComponent,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库,所以上面的测试会报错...Fluent Nhibernate确实是个好东西,让我在开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您项目中使用,用起来没手感(个人感觉),需要约定东西太多了,对于数据库结构也得按照他契约来

92460

高并发情况下秒杀、团购下单订单定时取消优化

; 三 逻辑优化 把子订单做稍宽些,把一些信息放到订单表里尤其一些强关联性信息,最好做到一张表内,比如库存主键,商品购买数量,这样在时候一方面可以精准命中目标,另外一方面减少许多额外查询操作...; 加锁 + 乐观锁保障不会被多次回,其实秒杀下单一般稍微多考虑考虑都不会出现超卖情况,但是这个逻辑需要好好考虑,这个极易造成超卖,普通业务单一产品单一库存还好,像我业务涉及到周期性库存,其实很容易涉及到超卖...; 异步化,在以下情况下可以采用异步化方式 如果我们对上游调用量没有一个很好预估或者上游取消订单流量极其不规律 上游业务不关心返回值或者上游业务不需要立即知晓结果 那么这里我们可以采用异步...MQ进行接收回,如果上游需要知晓结果,可能会高频查状态那么可以将回状态都存入redis 接口我这里优化比较少 一方面是由于其功能确实简单,只需要保障别造成超卖即可 另外一方面是因为大部分商品都是优惠力度极大...,一般不会取消订单,库存; 目前就到这里了,后面有空我会再补充一些

1.4K21

近期开发遇到问题总结

最近准备把后台管理系统重新设计开发下,使用了bootstrap,在网上找了个漂亮后台模板:sb2-admin,在使用遇到了不少问题,总结下,以免以后忘记。...1、EF5利用NuGet升级到EF6后,一些Attribute冲突[未解决]:       我原先数据驱动使用Fluent Nhibernate +Nhibernate+MSSQL2005...,本来想玩玩EF,而且现在新创建MVC项目模板,都会自带EF。...,这次因为后台首页想统计下数据,就利用了存储过程,但在使用却发现FN目前还不支持存储过程(点击查看官方),没有办法,只能利用Fluent Configuration和HBM Configuration...3、在使用Web Api时候,返回类型序列化冲突: 因为用新模板很炫,想把数据请求都使用Web Api来进行,但在使用时候,返回json数据,都返回了k_BackingField

824100
领券