mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 调整 DbContext.EntityChangeInfo 类名为 DbContext.EntityChangeReport.ChangeInfo;
- 调整 IUnitOfWork 接口,移除 OnEntityChange 属性,增加 EntityChangeReport 属性;
This commit is contained in:
parent
375ba5f3cb
commit
d7877924a5
@ -46,9 +46,9 @@ namespace FreeSql
|
|||||||
return _optionsPriv;
|
return _optionsPriv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
internal void EmitOnEntityChange(List<DbContext.EntityChangeInfo> report)
|
internal void EmitOnEntityChange(List<EntityChangeReport.ChangeInfo> report)
|
||||||
{
|
{
|
||||||
var oec = UnitOfWork?.OnEntityChange ?? Options.OnEntityChange;
|
var oec = UnitOfWork?.EntityChangeReport?.OnChange ?? Options.OnEntityChange;
|
||||||
if (oec == null || report == null || report.Any() == false) return;
|
if (oec == null || report == null || report.Any() == false) return;
|
||||||
oec(report);
|
oec(report);
|
||||||
}
|
}
|
||||||
@ -155,12 +155,23 @@ namespace FreeSql
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Queue Action
|
#region Queue Action
|
||||||
internal List<EntityChangeInfo> _entityChangeReport = new List<EntityChangeInfo>();
|
public class EntityChangeReport
|
||||||
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; }
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 实体变化记录
|
||||||
|
/// </summary>
|
||||||
|
public List<ChangeInfo> Report { get; } = new List<ChangeInfo>();
|
||||||
|
/// <summary>
|
||||||
|
/// 实体变化事件
|
||||||
|
/// </summary>
|
||||||
|
public Action<List<ChangeInfo>> OnChange { get; set; }
|
||||||
|
}
|
||||||
|
internal List<EntityChangeReport.ChangeInfo> _entityChangeReport = new List<EntityChangeReport.ChangeInfo>();
|
||||||
public enum EntityChangeType { Insert, Update, Delete, SqlRaw }
|
public enum EntityChangeType { Insert, Update, Delete, SqlRaw }
|
||||||
internal class ExecCommandInfo
|
internal class ExecCommandInfo
|
||||||
{
|
{
|
||||||
|
@ -25,6 +25,6 @@ namespace FreeSql
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 实体变化事件
|
/// 实体变化事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Action<List<DbContext.EntityChangeInfo>> OnEntityChange { get; set; }
|
public Action<List<DbContext.EntityChangeReport.ChangeInfo>> OnEntityChange { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (adds.Any() == false) return 0;
|
if (adds.Any() == false) return 0;
|
||||||
var affrows = await this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrowsAsync();
|
var affrows = await this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrowsAsync();
|
||||||
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ namespace FreeSql
|
|||||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync();
|
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync();
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
await AddOrUpdateNavigateListAsync(data, true);
|
await AddOrUpdateNavigateListAsync(data, true);
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
await DbContextExecCommandAsync();
|
await DbContextExecCommandAsync();
|
||||||
var newval = (await this.OrmInsert(data).ExecuteInsertedAsync()).First();
|
var newval = (await this.OrmInsert(data).ExecuteInsertedAsync()).First();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.Orm.MapEntityValue(_entityType, newval, data);
|
_db.Orm.MapEntityValue(_entityType, newval, data);
|
||||||
Attach(newval);
|
Attach(newval);
|
||||||
@ -70,7 +70,7 @@ namespace FreeSql
|
|||||||
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync();
|
var idtval = await this.OrmInsert(data).ExecuteIdentityAsync();
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
await AddOrUpdateNavigateListAsync(data, true);
|
await AddOrUpdateNavigateListAsync(data, true);
|
||||||
@ -104,7 +104,7 @@ namespace FreeSql
|
|||||||
await DbContextExecCommandAsync();
|
await DbContextExecCommandAsync();
|
||||||
var rets = await this.OrmInsert(data).ExecuteInsertedAsync();
|
var rets = await this.OrmInsert(data).ExecuteInsertedAsync();
|
||||||
if (rets.Count != data.Count()) throw new Exception($"特别错误:批量添加失败,{_db.Orm.Ado.DataType} 的返回数据,与添加的数目不匹配");
|
if (rets.Count != data.Count()) throw new Exception($"特别错误:批量添加失败,{_db.Orm.Ado.DataType} 的返回数据,与添加的数目不匹配");
|
||||||
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
||||||
var idx = 0;
|
var idx = 0;
|
||||||
foreach (var s in data)
|
foreach (var s in data)
|
||||||
_db.Orm.MapEntityValue(_entityType, rets[idx++], s);
|
_db.Orm.MapEntityValue(_entityType, rets[idx++], s);
|
||||||
@ -200,7 +200,7 @@ namespace FreeSql
|
|||||||
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
||||||
var sql = delall.ToSql();
|
var sql = delall.ToSql();
|
||||||
await delall.ExecuteAffrowsAsync();
|
await delall.ExecuteAffrowsAsync();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
}
|
}
|
||||||
else //保存
|
else //保存
|
||||||
{
|
{
|
||||||
@ -321,7 +321,7 @@ namespace FreeSql
|
|||||||
var update = this.OrmUpdate(null).SetSource(updateSource).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.EntityChangeInfo { Object = a, Type = DbContext.EntityChangeType.Update }));
|
_db._entityChangeReport.AddRange(updateSource.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Update }));
|
||||||
|
|
||||||
foreach (var newval in data)
|
foreach (var newval in data)
|
||||||
{
|
{
|
||||||
@ -373,7 +373,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (dels.Any() == false) return 0;
|
if (dels.Any() == false) return 0;
|
||||||
var affrows = await this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrowsAsync();
|
var affrows = await this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrowsAsync();
|
||||||
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
||||||
return Math.Max(dels.Length, affrows);
|
return Math.Max(dels.Length, affrows);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (adds.Any() == false) return 0;
|
if (adds.Any() == false) return 0;
|
||||||
var affrows = this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrows();
|
var affrows = this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrows();
|
||||||
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ namespace FreeSql
|
|||||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
AddOrUpdateNavigateList(data, true);
|
AddOrUpdateNavigateList(data, true);
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
DbContextExecCommand();
|
DbContextExecCommand();
|
||||||
var newval = this.OrmInsert(data).ExecuteInserted().First();
|
var newval = this.OrmInsert(data).ExecuteInserted().First();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.Orm.MapEntityValue(_entityType, newval, data);
|
_db.Orm.MapEntityValue(_entityType, newval, data);
|
||||||
Attach(newval);
|
Attach(newval);
|
||||||
@ -70,7 +70,7 @@ namespace FreeSql
|
|||||||
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
var idtval = this.OrmInsert(data).ExecuteIdentity();
|
||||||
IncrAffrows(1);
|
IncrAffrows(1);
|
||||||
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
_db.Orm.SetEntityIdentityValueWithPrimary(_entityType, data, idtval);
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
|
||||||
Attach(data);
|
Attach(data);
|
||||||
if (_db.Options.EnableAddOrUpdateNavigateList)
|
if (_db.Options.EnableAddOrUpdateNavigateList)
|
||||||
AddOrUpdateNavigateList(data, true);
|
AddOrUpdateNavigateList(data, true);
|
||||||
@ -108,7 +108,7 @@ namespace FreeSql
|
|||||||
DbContextExecCommand();
|
DbContextExecCommand();
|
||||||
var rets = this.OrmInsert(data).ExecuteInserted();
|
var rets = this.OrmInsert(data).ExecuteInserted();
|
||||||
if (rets.Count != data.Count()) throw new Exception($"特别错误:批量添加失败,{_db.Orm.Ado.DataType} 的返回数据,与添加的数目不匹配");
|
if (rets.Count != data.Count()) throw new Exception($"特别错误:批量添加失败,{_db.Orm.Ado.DataType} 的返回数据,与添加的数目不匹配");
|
||||||
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
_db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
|
||||||
var idx = 0;
|
var idx = 0;
|
||||||
foreach (var s in data)
|
foreach (var s in data)
|
||||||
_db.Orm.MapEntityValue(_entityType, rets[idx++], s);
|
_db.Orm.MapEntityValue(_entityType, rets[idx++], s);
|
||||||
@ -210,7 +210,7 @@ namespace FreeSql
|
|||||||
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
foreach (var midWhere in midWheres) delall.Where(midWhere);
|
||||||
var sql = delall.ToSql();
|
var sql = delall.ToSql();
|
||||||
delall.ExecuteAffrows();
|
delall.ExecuteAffrows();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
}
|
}
|
||||||
else //保存
|
else //保存
|
||||||
{
|
{
|
||||||
@ -331,7 +331,7 @@ namespace FreeSql
|
|||||||
var update = this.OrmUpdate(null).SetSource(updateSource).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.EntityChangeInfo { Object = a, Type = DbContext.EntityChangeType.Update }));
|
_db._entityChangeReport.AddRange(updateSource.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Update }));
|
||||||
|
|
||||||
foreach (var newval in data)
|
foreach (var newval in data)
|
||||||
{
|
{
|
||||||
@ -389,7 +389,7 @@ namespace FreeSql
|
|||||||
{
|
{
|
||||||
if (dels.Any() == false) return 0;
|
if (dels.Any() == false) return 0;
|
||||||
var affrows = this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrows();
|
var affrows = this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrows();
|
||||||
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
_db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
|
||||||
return Math.Max(dels.Length, affrows);
|
return Math.Max(dels.Length, affrows);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,16 @@
|
|||||||
<typeparam name="TEntity"></typeparam>
|
<typeparam name="TEntity"></typeparam>
|
||||||
<param name="data"></param>
|
<param name="data"></param>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.DbContext.EntityChangeReport.Report">
|
||||||
|
<summary>
|
||||||
|
实体变化记录
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.DbContext.EntityChangeReport.OnChange">
|
||||||
|
<summary>
|
||||||
|
实体变化事件
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.DbContextOptions.EnableAddOrUpdateNavigateList">
|
<member name="P:FreeSql.DbContextOptions.EnableAddOrUpdateNavigateList">
|
||||||
<summary>
|
<summary>
|
||||||
是否开启一对多,多对多联级保存功能<para></para>
|
是否开启一对多,多对多联级保存功能<para></para>
|
||||||
@ -219,14 +229,9 @@
|
|||||||
开启工作单元
|
开启工作单元
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.IUnitOfWork.OnEntityChange">
|
<member name="P:FreeSql.IUnitOfWork.EntityChangeReport">
|
||||||
<summary>
|
<summary>
|
||||||
实体变化事件
|
此工作单元内的实体变化跟踪
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:FreeSql.UnitOfWork.EntityChangeReport">
|
|
||||||
<summary>
|
|
||||||
工作单元的实体变化记录
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
<member name="M:FreeSqlDbContextExtensions.CreateDbContext(IFreeSql)">
|
||||||
|
@ -59,16 +59,12 @@ namespace FreeSql
|
|||||||
int ret;
|
int ret;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (UnitOfWork == null) EmitOnEntityChange(_entityChangeReport);
|
if (UnitOfWork?.EntityChangeReport != null)
|
||||||
else
|
|
||||||
{
|
{
|
||||||
var uow = UnitOfWork as UnitOfWork;
|
UnitOfWork.EntityChangeReport.Report.AddRange(_entityChangeReport);
|
||||||
if (uow != null)
|
if (UnitOfWork.EntityChangeReport.OnChange == null) UnitOfWork.EntityChangeReport.OnChange = Options.OnEntityChange;
|
||||||
{
|
} else
|
||||||
uow.EntityChangeReport.AddRange(_entityChangeReport);
|
EmitOnEntityChange(_entityChangeReport);
|
||||||
if (uow.OnEntityChange == null) uow.OnEntityChange = Options.OnEntityChange;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -75,7 +75,7 @@ namespace FreeSql
|
|||||||
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
||||||
var sql = delete.ToSql();
|
var sql = delete.ToSql();
|
||||||
var affrows = delete.ExecuteAffrows();
|
var affrows = delete.ExecuteAffrows();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
async public Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate)
|
async public Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate)
|
||||||
@ -83,7 +83,7 @@ namespace FreeSql
|
|||||||
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
|
||||||
var sql = delete.ToSql();
|
var sql = delete.ToSql();
|
||||||
var affrows = await delete.ExecuteAffrowsAsync();
|
var affrows = await delete.ExecuteAffrowsAsync();
|
||||||
_db._entityChangeReport.Add(new DbContext.EntityChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +35,8 @@ namespace FreeSql
|
|||||||
void Open();
|
void Open();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 实体变化事件
|
/// 此工作单元内的实体变化跟踪
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Action<List<DbContext.EntityChangeInfo>> OnEntityChange { get; set; }
|
DbContext.EntityChangeReport EntityChangeReport { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace FreeSql
|
namespace FreeSql
|
||||||
@ -33,7 +34,7 @@ namespace FreeSql
|
|||||||
#if ns20
|
#if ns20
|
||||||
Current.Value = null;
|
Current.Value = null;
|
||||||
#endif
|
#endif
|
||||||
EntityChangeReport.Clear();
|
EntityChangeReport?.Report.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Enable { get; private set; } = true;
|
public bool Enable { get; private set; } = true;
|
||||||
@ -81,7 +82,8 @@ namespace FreeSql
|
|||||||
if (_tran != null)
|
if (_tran != null)
|
||||||
{
|
{
|
||||||
_tran.Commit();
|
_tran.Commit();
|
||||||
OnEntityChange?.Invoke(EntityChangeReport);
|
if (EntityChangeReport != null && EntityChangeReport.OnChange != null && EntityChangeReport.Report.Any() == true)
|
||||||
|
EntityChangeReport.OnChange.Invoke(EntityChangeReport.Report);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -101,11 +103,7 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Action<List<DbContext.EntityChangeInfo>> OnEntityChange { get; set; }
|
public DbContext.EntityChangeReport EntityChangeReport { get; } = new DbContext.EntityChangeReport();
|
||||||
/// <summary>
|
|
||||||
/// 工作单元的实体变化记录
|
|
||||||
/// </summary>
|
|
||||||
public List<DbContext.EntityChangeInfo> EntityChangeReport { get; } = new List<DbContext.EntityChangeInfo>();
|
|
||||||
|
|
||||||
~UnitOfWork()
|
~UnitOfWork()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user