From 3e60615c6ac74b633e13c10219ac5a8eeb00f13a Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Thu, 21 Mar 2019 04:39:41 +0800 Subject: [PATCH] update --- DbContext.md | 33 ++++++++++++++++++++++++++------- 更新日志.md | 5 +++++ 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/DbContext.md b/DbContext.md index 4a0b285..1ae0ad0 100644 --- a/DbContext.md +++ b/DbContext.md @@ -59,10 +59,30 @@ long id = 0; using (var ctx = new SongContext()) { - id = await ctx.Songs.Insert(new Song { }).ExecuteIdentityAsync(); - var item = await ctx.Songs.Select.Where(a => a.Id == id).FirstAsync(); + var song = new Song { }; + await ctx.Songs.AddAsync(song); + id = song.Id; - throw new Exception("回滚,不提交事务"); + var adds = Enumerable.Range(0, 100) + .Select(a => new Song { Create_time = DateTime.Now, Is_deleted = false, Title = "xxxx" + a, Url = "url222" }) + .ToList(); + await ctx.Songs.AddRangeAsync(adds); + + for (var a = 0; a < adds.Count; a++) + adds[a].Title = "dkdkdkdk" + a; + + ctx.Songs.UpdateRange(adds); + + ctx.Songs.RemoveRange(adds.Skip(10).Take(20).ToList()); + + //ctx.Songs.Update(adds.First()); + + adds.Last().Url = "skldfjlksdjglkjjcccc"; + ctx.Songs.Update(adds.Last()); + + //throw new Exception("回滚"); + + await ctx.SaveChangesAsync(); } ``` @@ -90,11 +110,10 @@ OnConfiguring > AddFreeDbContext ## 说明 -- DbContext 内第一个添加、删除、或修改的操作,会开启事务,如果只做查询不会打开事务; +- DbContext 操作的数据在最后 SaveChanges 时才批量保存; - DbContext 内所有操作,使用同一个事务; -- 可多次执行 SaveChanges 方法,执行完后事务销毁,直到下一次事务开启; -- 每个 DbContext 实例的事务是独立的; -- 事务支持异步方法; +- 当实体存在自增时,或者 Add/AddRange 的时候主键值为空,会提前开启事务; +- 支持同步/异步方法; ## 参考资料 diff --git a/更新日志.md b/更新日志.md index 3ad6fdc..0d6e1d5 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,6 +1,11 @@ 完整版本:年数-月-日-当日版本号,FreeSql、FreeSql.Repository、FreeSql.DbContext 版本号相同。 +## v0.3.21 + +- 增加 IUpdate IgnoreColumns 重载方法,支持传入字符串数组忽略修改; +- 完善 FreeSql.DbContext,支持对象操作 + SaveChanges 最后保存操作; + ## v0.3.20 - 修复 ToList 选择指定对象时,应附加所有字段查询返回;