当前位置: 首页 > 编程语言 > C#

将TransactionScope与entity framework6一起使用分享

时间:2023-04-10 17:11:57 C#

C#学习教程:在实体框架中使用TransactionScope6这就是我要找的东西:dbItemthisItem=context.Items.First();thisItem.Name="更新名称";context.SaveChanges();//保存对此上下文的更改//然后我想查询当前上下文中的更新项目,而不是针对数据库项目thisUpdatedItem=context.Items.Where(a=>a.Name=="Updatename")。第一的();//做更多查询}//首先,我希望它将当前上下文中的所有更改提交到数据库范围。Complete();有人可以帮助我理解并向我展示工作模式吗?是的,它可以完成,当您想将实体插入数据库并使用自动生成的ID进行下一次插入或更新时,它非常有用BeginTransaction()){varitem=newItem();context.Items.Insert(项目);context.SaveChanges();//临时插入数据库以取回自动生成的ID//做一些其他事情varotherItem=context.OtherItems.First();//使用插入的idotherItem.Message=$"Youjustinsertitemwithid={item.Id}todatabase";事务.提交();因为你的问题还询问了工作模式,这是我的工作代码(使用FluentApi、DbContext和Transaction)我和你有同样的问题:)。希望它能帮助你publicclassFluentUnitOfWork:IDisposable{privateDbContextContext{get;}privateDbContextTransactionTransaction{get;放;}publicFluentUnitOfWork(DbContextcontext){Context=context;}publicFluentUnitOfWorkBeginTransaction(){Transaction=Context.Database.BeginTransaction();归还这个;}publicFluentUnitOfWorkDoInsert(TEntityentity)whereTEntity:class{Context.Set().Add(entity);归还这个;}publicFluentUnitOfWorkDoInsert(TEntityentity,outTEntityinserted)whereTEntity:class{inserted=Context.Set().Add(entity);归还这个;}publicFluentUnitOfWorkDoUpdate(TEntityentity)whereTEntity:class{Context.Entry(entity).State=EntityState.Modified;归还这个;}publicFluentUnitOfWorkSaveAndContinue(){try{Context.SaveChanges();}catch(DbEntityValidationExceptiondbEx){//在此处添加异常处理代码}returnthis;}publicboolEndTransaction(){try{Context.SaveChanges();事务.提交();}catch(DbEntityValidationExceptiondbEx){//在此处添加异常处理代码}returntrue;}publicvoidRollBack(){Transaction.Rollback();处置();}publicvoidDispose(){交易?.Dispose();上下文?.Dispose();}}示例用法:varstatus=BeginTransaction()//第一部分.DoInsert(entity1).DoInsert(entity2).DoInsert(entity3).DoInsert(entity4).SaveAndContinue()//第二部分如果要确保只查询上下文的本地内容,可以使用“本地”集合:ItemthisItem=context.Items.First();thisItem.Name="更新名称";ItemthisUpdatedItem=context.Items.Local.Where(a=>a.Name=="更新名称").First();这只会查询上下文的内存数据,不会访问数据库只要您通过从数据库中添加或加载对象来具体化上下文中的对象,就会有“本地”数据,即您不需要调用保存更改()。SaveChanges()会将上下文的内容写入您的数据库。以上就是C#学习教程:TransactionScope和entityframework6一起使用全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: