mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
AggregateRootRepository
This commit is contained in:
parent
0f41b70e7e
commit
115232277b
@ -211,6 +211,13 @@ namespace FreeSql
|
|||||||
affrows += await Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
affrows += await Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
||||||
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrowsAsync(cancellationToken);
|
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrowsAsync(cancellationToken);
|
||||||
if (deletedOutput != null) deletedOutput.AddRange(tracking.DeleteLog[a].Item2);
|
if (deletedOutput != null) deletedOutput.AddRange(tracking.DeleteLog[a].Item2);
|
||||||
|
UnitOfWork?.EntityChangeReport?.Report.AddRange(tracking.DeleteLog[a].Item2.Select(x =>
|
||||||
|
new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
Type = DbContext.EntityChangeType.Delete,
|
||||||
|
EntityType = tracking.DeleteLog[a].Item1,
|
||||||
|
Object = x
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -239,20 +246,42 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var a = tracking.DeleteLog.Count - 1; a >= 0; a--)
|
for (var a = tracking.DeleteLog.Count - 1; a >= 0; a--)
|
||||||
|
{
|
||||||
affrows += await Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
affrows += await Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
||||||
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrowsAsync(cancellationToken);
|
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrowsAsync(cancellationToken);
|
||||||
|
UnitOfWork?.EntityChangeReport?.Report.AddRange(tracking.DeleteLog[a].Item2.Select(x =>
|
||||||
|
new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
Type = DbContext.EntityChangeType.Delete,
|
||||||
|
EntityType = tracking.DeleteLog[a].Item1,
|
||||||
|
Object = x
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
var updateLogDict = tracking.UpdateLog.GroupBy(a => a.Item1).ToDictionary(a => a.Key, a => tracking.UpdateLog.Where(b => b.Item1 == a.Key).Select(b =>
|
var updateLogDict = tracking.UpdateLog.GroupBy(a => a.Item1).ToDictionary(a => a.Key, a => tracking.UpdateLog.Where(b => b.Item1 == a.Key).Select(b => new
|
||||||
NativeTuple.Create(b.Item2, b.Item3, string.Join(",", b.Item4.OrderBy(c => c)), b.Item4)).ToArray());
|
{
|
||||||
var updateLogDict2 = updateLogDict.ToDictionary(a => a.Key, a => a.Value.ToDictionary(b => b.Item3, b => a.Value.Where(c => c.Item3 == b.Item3).ToArray()));
|
BeforeObject = b.Item2,
|
||||||
|
AfterObject = b.Item3,
|
||||||
|
UpdateColumns = b.Item4,
|
||||||
|
UpdateColumnsString = string.Join(",", b.Item4.OrderBy(c => c))
|
||||||
|
}).ToArray());
|
||||||
|
var updateLogDict2 = updateLogDict.ToDictionary(a => a.Key, a => a.Value.ToDictionary(b => b.UpdateColumnsString, b => a.Value.Where(c => c.UpdateColumnsString == b.UpdateColumnsString).ToArray()));
|
||||||
foreach (var dl in updateLogDict2)
|
foreach (var dl in updateLogDict2)
|
||||||
{
|
{
|
||||||
foreach (var dl2 in dl.Value)
|
foreach (var dl2 in dl.Value)
|
||||||
{
|
{
|
||||||
affrows += await Orm.Update<object>().AsType(dl.Key).AsTable(_asTableRule)
|
affrows += await Orm.Update<object>().AsType(dl.Key).AsTable(_asTableRule)
|
||||||
.SetSource(dl2.Value.Select(a => a.Item2).ToArray())
|
.SetSource(dl2.Value.Select(a => a.AfterObject).ToArray())
|
||||||
.UpdateColumns(dl2.Value.First().Item4.ToArray())
|
.UpdateColumns(dl2.Value.First().UpdateColumns.ToArray())
|
||||||
.ExecuteAffrowsAsync(cancellationToken);
|
.ExecuteAffrowsAsync(cancellationToken);
|
||||||
|
UnitOfWork?.EntityChangeReport?.Report.AddRange(dl2.Value.Select(x =>
|
||||||
|
new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
Type = DbContext.EntityChangeType.Update,
|
||||||
|
EntityType = dl.Key,
|
||||||
|
Object = x.AfterObject,
|
||||||
|
BeforeObject = x.BeforeObject
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DisposeChildRepositorys();
|
DisposeChildRepositorys();
|
||||||
|
@ -263,6 +263,13 @@ namespace FreeSql
|
|||||||
affrows += Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
affrows += Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
||||||
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrows();
|
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrows();
|
||||||
if (deletedOutput != null) deletedOutput.AddRange(tracking.DeleteLog[a].Item2);
|
if (deletedOutput != null) deletedOutput.AddRange(tracking.DeleteLog[a].Item2);
|
||||||
|
UnitOfWork?.EntityChangeReport?.Report.AddRange(tracking.DeleteLog[a].Item2.Select(x =>
|
||||||
|
new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
Type = DbContext.EntityChangeType.Delete,
|
||||||
|
EntityType = tracking.DeleteLog[a].Item1,
|
||||||
|
Object = x
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
return affrows;
|
return affrows;
|
||||||
}
|
}
|
||||||
@ -291,20 +298,42 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var a = tracking.DeleteLog.Count - 1; a >= 0; a--)
|
for (var a = tracking.DeleteLog.Count - 1; a >= 0; a--)
|
||||||
|
{
|
||||||
affrows += Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
affrows += Orm.Delete<object>().AsType(tracking.DeleteLog[a].Item1).AsTable(_asTableRule)
|
||||||
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrows();
|
.WhereDynamic(tracking.DeleteLog[a].Item2).ExecuteAffrows();
|
||||||
|
UnitOfWork?.EntityChangeReport?.Report.AddRange(tracking.DeleteLog[a].Item2.Select(x =>
|
||||||
|
new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
Type = DbContext.EntityChangeType.Delete,
|
||||||
|
EntityType = tracking.DeleteLog[a].Item1,
|
||||||
|
Object = x
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
var updateLogDict = tracking.UpdateLog.GroupBy(a => a.Item1).ToDictionary(a => a.Key, a => tracking.UpdateLog.Where(b => b.Item1 == a.Key).Select(b =>
|
var updateLogDict = tracking.UpdateLog.GroupBy(a => a.Item1).ToDictionary(a => a.Key, a => tracking.UpdateLog.Where(b => b.Item1 == a.Key).Select(b => new
|
||||||
NativeTuple.Create(b.Item2, b.Item3, string.Join(",", b.Item4.OrderBy(c => c)), b.Item4)).ToArray());
|
{
|
||||||
var updateLogDict2 = updateLogDict.ToDictionary(a => a.Key, a => a.Value.ToDictionary(b => b.Item3, b => a.Value.Where(c => c.Item3 == b.Item3).ToArray()));
|
BeforeObject = b.Item2,
|
||||||
|
AfterObject = b.Item3,
|
||||||
|
UpdateColumns = b.Item4,
|
||||||
|
UpdateColumnsString = string.Join(",", b.Item4.OrderBy(c => c))
|
||||||
|
}).ToArray());
|
||||||
|
var updateLogDict2 = updateLogDict.ToDictionary(a => a.Key, a => a.Value.ToDictionary(b => b.UpdateColumnsString, b => a.Value.Where(c => c.UpdateColumnsString == b.UpdateColumnsString).ToArray()));
|
||||||
foreach (var dl in updateLogDict2)
|
foreach (var dl in updateLogDict2)
|
||||||
{
|
{
|
||||||
foreach (var dl2 in dl.Value)
|
foreach (var dl2 in dl.Value)
|
||||||
{
|
{
|
||||||
affrows += Orm.Update<object>().AsType(dl.Key).AsTable(_asTableRule)
|
affrows += Orm.Update<object>().AsType(dl.Key).AsTable(_asTableRule)
|
||||||
.SetSource(dl2.Value.Select(a => a.Item2).ToArray())
|
.SetSource(dl2.Value.Select(a => a.AfterObject).ToArray())
|
||||||
.UpdateColumns(dl2.Value.First().Item4.ToArray())
|
.UpdateColumns(dl2.Value.First().UpdateColumns.ToArray())
|
||||||
.ExecuteAffrows();
|
.ExecuteAffrows();
|
||||||
|
UnitOfWork?.EntityChangeReport?.Report.AddRange(dl2.Value.Select(x =>
|
||||||
|
new DbContext.EntityChangeReport.ChangeInfo
|
||||||
|
{
|
||||||
|
Type = DbContext.EntityChangeType.Update,
|
||||||
|
EntityType = dl.Key,
|
||||||
|
Object = x.AfterObject,
|
||||||
|
BeforeObject = x.BeforeObject
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DisposeChildRepositorys();
|
DisposeChildRepositorys();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user