本文转自:http://blog.csdn.net/alvachien/article/details/51576961

跟Entity Framework之前的版本不同,Class DbContext不再有AcceptAllChanges()方法。

使用Transaction需要使用DbContext中的Database对象。

using (var transaction = await _dbContext.Database.BeginTransactionAsync())
{
try
{
... Operation on object
_dbContext.TableA.Add(rowa); // Add rowa to Table A
_dbContext.SaveChanges(); _dbContext.TableB.Add(rowb); // Add rowb to Table B
_dbContext.SaveChanges(); transaction.Commit();
}
catch (Exception exp)
{
#if DEBUG
Console.WriteLine(exp.Message);
#endif
transaction.Rollback();
}

当然要使用async,必须将对应的Method做调整

[HttpPost]
public IActionResult Create([FromBody] MyViewModel ch)

为:

[HttpPost]
public async Task<IActionResult> Create([FromBody] MyViewModel ch)

值得强调一下的是,AcceptAllChanges()方法还是存在的,只不过移到了ChangeTracker上了。 看看DbContext的定义

public class DbContext : IDisposable, IInfrastructure<IServiceProvider>
{
public DbContext([NotNullAttribute] DbContextOptions options);
protected DbContext(); public virtual ChangeTracker ChangeTracker { get; }
public virtual DatabaseFacade Database { get; }
...
}

使用AcceptAllChanges()的实例:

// Some tables changed
_dbContext.SaveChanges(false);
// Other tables changed
_dbContext.SaveChanges(false); // Now save it.
_dbContext.ChangeTracker.AcceptAllChanges();

使用ChangeTracker.AcceptAllChanges()方法有个问题,就是设置为Identity的Column不会自动获取ID,因为SaveChanges(false)表示不向数据库提交修改。对SQL Server来说,只有SaveChanges(),EntityFramework才会调用SCOPE_IDENTITY()来获取下一个ID。

[转]ASP.NET Core 1.0: Using Entity Framework Core 1.0 - Transaction的更多相关文章

  1. ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6  将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0    将 ...

  2. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...

  3. ASP.NET Core 1.0: Using Entity Framework Core

    伴随着ASP.NET Core 1.0发布的还有Entity Framework Core 1.0; 官方文档链接:https://docs.efproject.net/en/latest/platf ...

  4. Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 38 Entity Framework ...

  5. ASP.NET Core 1.0: Using Entity Framework Core 1.0 - Transaction

    跟Entity Framework之前的版本不同,Class DbContext不再有AcceptAllChanges()方法. 使用Transaction需要使用DbContext中的Databas ...

  6. 请问在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句?

    using dotNET.Core; using Microsoft.Extensions.Logging; using System; using System.Collections.Generi ...

  7. Entity Framework Core 练习参考

    项目地址:https://gitee.com/dhclly/IceDog.EFCore 项目介绍 对 Microsoft EntityFramework Core 框架的练习测试 参考文档教程 官方文 ...

  8. 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

    在开发涉及到数据库的程序时,常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况,这时就需要进行数据库迁移. 实现数据库迁移有很多种办法,从手动管理各个版本的ddl脚本,到实现自己的mig ...

  9. ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.

    在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写 ...

随机推荐

  1. date 时间确定

    获取当前时间: var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var d ...

  2. Linux网络编程:一个简单的正向代理服务器的实现

    Linux是一个可靠性非常高的操作系统,但是所有用过Linux的朋友都会感觉到, Linux和Windows这样的"傻瓜"操作系统(这里丝毫没有贬低Windows的意思,相反这应该 ...

  3. Linux安装mysql.8.0.12

    1. linux安装mysql8.0.12,亲测可用. 以下是安装过程中出现的问题: 1 [root@localtest1 file]# systemctl start mysqld 2 Job fo ...

  4. Integer to Roman——相当于查表法

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  5. Pychram------更改编辑区域的字体大小和背景颜色

    如上设置完成即可看到如下的效果设置完成.

  6. H5游戏开发:贪吃蛇

    贪吃蛇的经典玩法有两种: 积分闯关 一吃到底 第一种是笔者小时候在掌上游戏机最先体验到的(不小心暴露了年龄),具体玩法是蛇吃完一定数量的食物后就通关,通关后速度会加快:第二种是诺基亚在1997年在其自 ...

  7. CentOS7.5安裝配置多协议下载器Aria2

    一.搭建 Aria2 以及 AriaNg Web UI 使用Docker构建的Aria2 参考 aria2-ariang-docker 以及 aria2-ariang-x-docker-compose ...

  8. (5) go 控制台输入输出、进制转换、原反补码、位运算

    一.控制台接受输入 二.原反补码 三.位运算 四.移位运算

  9. Bzoj 3498 Cakes(三元环)

    题面(权限题就不放题面了) 题解 三元环模板题,按题意模拟即可. #include <cstdio> #include <cstring> #include <vecto ...

  10. matlab学习之绘制参数曲线,添加辅助线以及颜色设置

    粘贴代码 % 插入参数曲线h % 插入辅助线h1 % 并设置颜色,包括画布颜色和曲线颜色 t=-pi:0.1:pi; x=cos(t)-sin(3*t); y=sin(t).*cos(t)-cos(3 ...