在entityframework中使用事务

itjeff itjeff     2022-08-02     438

关键词:

继续为想使用Entity Framework的朋友在前面探路,分享的东西虽然技术含量不高,但都是经过实践检验的。

在Entity Framework中使用事务很简单,将操作放在TransactionScope中,并通过Complete()方法提交事务即可。

示例代码如下:

复制代码
using (BlogDbContext context =new BlogDbContext())
{
using (TransactionScope transaction =new TransactionScope())
{
context.BlogPosts.Add(blogPost);
context.SaveChanges();
postBody.ID = blogPost.ID;
context.EntryViewCounts.Add(
new EntryViewCount() { EntryID = blogPost.ID });
context.PostBodys.Add(postBody);
context.SaveChanges();
//提交事务
transaction.Complete();
}
}
复制代码

经过测试验证,在transaction.Complete()之前的代码中只要出现异常,事务就会回滚。

【更新】

更好的解决方法见 Working with Transactions (EF6 Onwards)

entityframework中多个dbcontext中的每个请求的事务(代码片段)

我正在使用Asp.NetMVC和EntityFramework。我有一个类来管理每个请求的事务,如下所示:publicclassTransactionPerRequest:IRunOnEachRequest,IRunOnError,IRunAfterEachRequestprivatereadonlyContextDB_Context;privatereadonlyHttpContextBase 查看详情

从业务逻辑层使用带有 EntityFramework 的事务

】从业务逻辑层使用带有EntityFramework的事务【英文标题】:UsingTransactionswithEntityFrameworkFROMthebusinesslogiclayer【发布时间】:2012-05-0806:19:24【问题描述】:请先看看这个:GoodCodingPractices所以,这是我的设计。网站2.业务逻辑层3.DALFac... 查看详情

entityframework事务的使用(代码片段)

事务(Transaction),一般是指要做的或所做的事情,要么全部完成,要么全部失败using(vardb=newSTEMContext())using(vartransaction=db.Database.BeginTransaction())try#region将数据解析保存到数据库for(vari=0;i<gameList.Count;i++)//将数据插入到数据库 ... 查看详情

[转]在entityframework6中执行sql语句

本文转自:http://www.cnblogs.com/wujingtao/p/5412329.html在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有操作。这一节我来介绍一下如何使用在EF6中执行SQL语句。你可能要问,我用EF不就为了避... 查看详情

EF RemoveRange 在事务范围内不起作用

...-05-2410:16:15【问题描述】:我在我们的ASP.NETMVC项目中使用EntityFramework6.2.0,并且在其中一个操作中,我们使用以下代码从存储库中删除了一系列记录。我们希望这发生在事务范围内,因此发生任何错误都会回滚整个事务。下面是... 查看详情

实体框架 - SaveChanges 与事务

】实体框架-SaveChanges与事务【英文标题】:EntityFramework-SaveChangesvsTransaction【发布时间】:2022-01-0802:25:24【问题描述】:我有一个有点愚蠢的问题,但我没有找到答案。在事务中单次调用SaveChanges()和单次调用SaveChanges()有什么区别... 查看详情

在 WCF 中使用 EntityFramework 加载子实体

】在WCF中使用EntityFramework加载子实体【英文标题】:LoadChildEntitieswithEntityFrameworkinWCF【发布时间】:2020-03-0116:19:23【问题描述】:以下代码是一个WCF项目。我正在使用EntityFramekwork(v.6)加载表的子数据。如下代码。这是存储库中的... 查看详情

entityframework6.x多个上下文迁移实现分布式事务

前言自从项目上了.NETCore平台用上了EntityFrameworkCore就再没碰过EntityFramework6.x版本,目前而言EntityFramework6.x是用的最多,无论是找工作而言还是提升自身技术而言皆自身收益,同时呢,大多数时间除了工作之外,还留有一小部分时... 查看详情

如何在 ORM 中实现一致的事务?

...问题描述】:我的问题是概念性的。假设我们使用ORM(如EntityFramework、Hibernate等)并在这些ORM中建模我们的领域对象。既然ORM会为我们抽象出大部分SQL/do事务,那么我们如何确保我们的事务是一致的呢?示例:我们有一个卖书的... 查看详情

如何在 Entity Framework 6 DbContext.Database.BeginTransaction 中配置事务超时?

】如何在EntityFramework6DbContext.Database.BeginTransaction中配置事务超时?【英文标题】:HowdoyouconfiguretheTransactiontimeoutinEntityFramework6DbContext.Database.BeginTransaction?【发布时间】:2013-10-2322:59:22【问题描述】:使用类似的代码using(vartran=Ctxt. 查看详情

使用entityframework

...代码中手工造的数据。本文将演示如何在ASP.NETMVC中使用EntityFramework从数据库中获取数据。虽然本文题目听上去比较简单,但如果你认真阅读,相信你一定会有所收获。本文目录:ORM和EF当我们要开发一个应用程序,就要考虑怎样... 查看详情

如何在 Linq EntityFramework 4 中使用内连接和除外

】如何在LinqEntityFramework4中使用内连接和除外【英文标题】:HowtouseInnerJoinandExceptinLinqEntityFramework4【发布时间】:2013-08-2118:43:11【问题描述】:我有两个表具有一对多(详细信息)关系。我想在Linq中编写这个查询(用SQL编写)。... 查看详情

在entityframework4中使用存储库/uow模式的多个objectcontexts(代码片段)

我在asp.netWeb应用程序中使用EF4和StructureMap。我正在使用工作模式的存储库/单元作为detailedinthispost。在代码中,有一行代表在Global.asax中委托ObjectContext的设置。EntityUnitOfWorkFactory.SetObjectContext(()=>newMyObjectContext());在网页代码隐藏... 查看详情

如何在mvc5的类库项目中使用entityframework6codefirst(代码片段)

...VC5项目中。如果我使用相同的数据库,如何在类库中使用EntityFramework并引用MVC5和其他项目。答案诀窍是在客户端项目中拥有连接字符串,在您的案例MVC项目中。在web.config或app.config中。在您的情况下,它是web.config文件。然后,... 查看详情

如何在 EntityFramework Core 中使用部分类和部分 OnModelCreating 方法扩展 DbContext

】如何在EntityFrameworkCore中使用部分类和部分OnModelCreating方法扩展DbContext【英文标题】:HowtoextendDbContextwithpartialclassandpartialOnModelCreatingmethodinEntityFrameworkCore【发布时间】:2019-02-1010:00:12【问题描述】:我正在使用EFCore和DatabaseFirst... 查看详情

使用 Entityframework 核心中的枚举类型列表过滤查询

】使用Entityframework核心中的枚举类型列表过滤查询【英文标题】:filterqueryusinglistofEnumtypeinEntityframeworkcore【发布时间】:2021-12-0212:45:31【问题描述】:我在使用枚举类型列表过滤查询时遇到问题publicenumOfferNone=1,all,stopClassEmp[Column... 查看详情

在 EntityFramework 4.1 中无法获取 Find() 方法

】在EntityFramework4.1中无法获取Find()方法【英文标题】:Can\'tgetFind()methodinEntityFramework4.1【发布时间】:2014-02-1016:39:43【问题描述】:publicActionResultEdit(intid)using(vardb=newBlogDataEntities())returnView(db.Blogs.Find(id));我一直在使用这个http:/ 查看详情

怎样在windows窗体程序中使用entityframework进行数据的增删?

我用C#开发Windows窗体应用程序,在一个窗体中使用了DataGridView控件显示数据,把DataGridView控件与EF的查询结果集绑定,数据正常显示(如下图),也能修改(直接在DataGridView中修改然后保存即可,保存按钮的Click事件调用的是DbCon... 查看详情