- 完善 DbContext/UnitOfWork EntityChange 更新对象之前的值;

This commit is contained in:
28810 2020-08-05 13:43:49 +08:00
parent dcb4fef9e2
commit dfac943495
6 changed files with 24 additions and 12 deletions

View File

@ -243,6 +243,10 @@ namespace FreeSql
public class ChangeInfo public class ChangeInfo
{ {
public object Object { get; set; } public object Object { get; set; }
/// <summary>
/// Type = Update 的时候,获取更新之前的对象
/// </summary>
public object BeforeObject { get; set; }
public EntityChangeType Type { get; set; } public EntityChangeType Type { get; set; }
} }
/// <summary> /// <summary>

View File

@ -363,15 +363,16 @@ namespace FreeSql
if (data?.Count > 0) if (data?.Count > 0)
{ {
if (cuig.Length == _table.Columns.Count) if (cuig.Length == _table.Columns.Count)
return ups.Length == data.Count ? -998 : -997; return ups.Length == data.Count ? -998 : -997;
var updateSource = data.Select(a => a.Value).ToArray(); var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
var update = this.OrmUpdate(null).SetSource(updateSource).IgnoreColumns(cuig);
var affrows = await update.ExecuteAffrowsAsync(); 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) foreach (var newval in data)
{ {

View File

@ -399,15 +399,17 @@ namespace FreeSql
if (data?.Count > 0) if (data?.Count > 0)
{ {
if (cuig.Length == _table.Columns.Count) if (cuig.Length == _table.Columns.Count)
return ups.Length == data.Count ? -998 : -997; return ups.Length == data.Count ? -998 : -997;
var updateSource = data.Select(a => a.Value).ToArray(); var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
var update = this.OrmUpdate(null).SetSource(updateSource).IgnoreColumns(cuig);
var affrows = update.ExecuteAffrows(); 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) foreach (var newval in data)
{ {

View File

@ -57,6 +57,11 @@
<typeparam name="TEntity"></typeparam> <typeparam name="TEntity"></typeparam>
<param name="data"></param> <param name="data"></param>
</member> </member>
<member name="P:FreeSql.DbContext.EntityChangeReport.ChangeInfo.BeforeObject">
<summary>
Type = Update 的时候,获取更新之前的对象
</summary>
</member>
<member name="P:FreeSql.DbContext.EntityChangeReport.Report"> <member name="P:FreeSql.DbContext.EntityChangeReport.Report">
<summary> <summary>
实体变化记录 实体变化记录

View File

@ -191,7 +191,7 @@ uow.OnEntityChange = report => {
参数 report 是一个 List 集合,集合元素的类型定义如下: 参数 report 是一个 List 集合,集合元素的类型定义如下:
```csharp ```csharp
public class EntityChangeInfo public class ChangeInfo
{ {
public object Object { get; set; } public object Object { get; set; }
public EntityChangeType Type { get; set; } public EntityChangeType Type { get; set; }

View File

@ -213,7 +213,7 @@ uow.OnEntityChange = report => {
参数 report 是一个 List 集合,集合元素的类型定义如下: 参数 report 是一个 List 集合,集合元素的类型定义如下:
```csharp ```csharp
public class EntityChangeInfo public class ChangeInfo
{ {
public object Object { get; set; } public object Object { get; set; }
public EntityChangeType Type { get; set; } public EntityChangeType Type { get; set; }