From dfac9434959993806afdecbd93bef925a443cba3 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Wed, 5 Aug 2020 13:43:49 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=AE=8C=E5=96=84=20DbContext/UnitOfWork?=
=?UTF-8?q?=20EntityChange=20=E6=9B=B4=E6=96=B0=E5=AF=B9=E8=B1=A1=E4=B9=8B?=
=?UTF-8?q?=E5=89=8D=E7=9A=84=E5=80=BC=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/DbContext/DbContext.cs | 4 ++++
FreeSql.DbContext/DbSet/DbSetAsync.cs | 11 ++++++-----
FreeSql.DbContext/DbSet/DbSetSync.cs | 12 +++++++-----
FreeSql.DbContext/FreeSql.DbContext.xml | 5 +++++
FreeSql.DbContext/readme.md | 2 +-
FreeSql.Repository/readme.md | 2 +-
6 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/FreeSql.DbContext/DbContext/DbContext.cs b/FreeSql.DbContext/DbContext/DbContext.cs
index be8eb704..dedde15f 100644
--- a/FreeSql.DbContext/DbContext/DbContext.cs
+++ b/FreeSql.DbContext/DbContext/DbContext.cs
@@ -243,6 +243,10 @@ namespace FreeSql
public class ChangeInfo
{
public object Object { get; set; }
+ ///
+ /// Type = Update 的时候,获取更新之前的对象
+ ///
+ public object BeforeObject { get; set; }
public EntityChangeType Type { get; set; }
}
///
diff --git a/FreeSql.DbContext/DbSet/DbSetAsync.cs b/FreeSql.DbContext/DbSet/DbSetAsync.cs
index aefaa719..0c602322 100644
--- a/FreeSql.DbContext/DbSet/DbSetAsync.cs
+++ b/FreeSql.DbContext/DbSet/DbSetAsync.cs
@@ -363,15 +363,16 @@ namespace FreeSql
if (data?.Count > 0)
{
-
if (cuig.Length == _table.Columns.Count)
return ups.Length == data.Count ? -998 : -997;
- var updateSource = data.Select(a => a.Value).ToArray();
- var update = this.OrmUpdate(null).SetSource(updateSource).IgnoreColumns(cuig);
-
+ var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
var affrows = await update.ExecuteAffrowsAsync();
- _db._entityChangeReport.AddRange(updateSource.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Update }));
+ _db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo {
+ Object = a.Value,
+ BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? beforeVal.Value : null,
+ Type = DbContext.EntityChangeType.Update
+ }));
foreach (var newval in data)
{
diff --git a/FreeSql.DbContext/DbSet/DbSetSync.cs b/FreeSql.DbContext/DbSet/DbSetSync.cs
index 2377a59c..dd260438 100644
--- a/FreeSql.DbContext/DbSet/DbSetSync.cs
+++ b/FreeSql.DbContext/DbSet/DbSetSync.cs
@@ -399,15 +399,17 @@ namespace FreeSql
if (data?.Count > 0)
{
-
if (cuig.Length == _table.Columns.Count)
return ups.Length == data.Count ? -998 : -997;
- var updateSource = data.Select(a => a.Value).ToArray();
- var update = this.OrmUpdate(null).SetSource(updateSource).IgnoreColumns(cuig);
-
+ var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
var affrows = update.ExecuteAffrows();
- _db._entityChangeReport.AddRange(updateSource.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Update }));
+ _db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
+ {
+ Object = a.Value,
+ BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? beforeVal.Value : null,
+ Type = DbContext.EntityChangeType.Update
+ }));
foreach (var newval in data)
{
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index e54cbf74..2acb6679 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -57,6 +57,11 @@
+
+
+ Type = Update 的时候,获取更新之前的对象
+
+
实体变化记录
diff --git a/FreeSql.DbContext/readme.md b/FreeSql.DbContext/readme.md
index ac006f8d..1540ea3b 100644
--- a/FreeSql.DbContext/readme.md
+++ b/FreeSql.DbContext/readme.md
@@ -191,7 +191,7 @@ uow.OnEntityChange = report => {
参数 report 是一个 List 集合,集合元素的类型定义如下:
```csharp
-public class EntityChangeInfo
+public class ChangeInfo
{
public object Object { get; set; }
public EntityChangeType Type { get; set; }
diff --git a/FreeSql.Repository/readme.md b/FreeSql.Repository/readme.md
index 4c58c538..70620dec 100644
--- a/FreeSql.Repository/readme.md
+++ b/FreeSql.Repository/readme.md
@@ -213,7 +213,7 @@ uow.OnEntityChange = report => {
参数 report 是一个 List 集合,集合元素的类型定义如下:
```csharp
-public class EntityChangeInfo
+public class ChangeInfo
{
public object Object { get; set; }
public EntityChangeType Type { get; set; }