mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-17 19:43:21 +08:00
- 修复 Repository/DbContext 同一实例执行报错后续无法再 CRUD;
This commit is contained in:
parent
ebca77d08b
commit
3fbcb65089
@ -98,58 +98,64 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
while (_prevCommands.Any() || states.Any())
|
try
|
||||||
{
|
{
|
||||||
var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
|
while (_prevCommands.Any() || states.Any())
|
||||||
if (oldinfo == null) oldinfo = info;
|
|
||||||
var isLiveUpdate = false;
|
|
||||||
flagFuncUpdateLaststate = false;
|
|
||||||
|
|
||||||
if (_prevCommands.Any() == false && states.Any() ||
|
|
||||||
info != null && oldinfo.changeType != info.changeType ||
|
|
||||||
info != null && oldinfo.stateType != info.stateType ||
|
|
||||||
info != null && oldinfo.entityType != info.entityType)
|
|
||||||
{
|
{
|
||||||
|
var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
|
||||||
|
if (oldinfo == null) oldinfo = info;
|
||||||
|
var isLiveUpdate = false;
|
||||||
|
flagFuncUpdateLaststate = false;
|
||||||
|
|
||||||
if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
|
if (_prevCommands.Any() == false && states.Any() ||
|
||||||
|
info != null && oldinfo.changeType != info.changeType ||
|
||||||
|
info != null && oldinfo.stateType != info.stateType ||
|
||||||
|
info != null && oldinfo.entityType != info.entityType)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
|
||||||
|
{
|
||||||
|
//最后一个,合起来发送
|
||||||
|
states.Add(info.state);
|
||||||
|
info = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (oldinfo.changeType)
|
||||||
|
{
|
||||||
|
case EntityChangeType.Insert:
|
||||||
|
await funcInsert();
|
||||||
|
break;
|
||||||
|
case EntityChangeType.Delete:
|
||||||
|
await funcDelete();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
isLiveUpdate = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
|
||||||
|
{
|
||||||
|
if (states.Any())
|
||||||
|
{
|
||||||
|
await funcUpdate(isLiveUpdate);
|
||||||
|
if (info?.changeType == EntityChangeType.Update)
|
||||||
|
flagFuncUpdateLaststate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info != null)
|
||||||
{
|
{
|
||||||
//最后一个,合起来发送
|
|
||||||
states.Add(info.state);
|
states.Add(info.state);
|
||||||
info = null;
|
oldinfo = info;
|
||||||
|
|
||||||
|
if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
|
||||||
|
await funcUpdate(isLiveUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (oldinfo.changeType)
|
|
||||||
{
|
|
||||||
case EntityChangeType.Insert:
|
|
||||||
await funcInsert();
|
|
||||||
break;
|
|
||||||
case EntityChangeType.Delete:
|
|
||||||
await funcDelete();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
isLiveUpdate = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
|
|
||||||
{
|
|
||||||
if (states.Any())
|
|
||||||
{
|
|
||||||
await funcUpdate(isLiveUpdate);
|
|
||||||
if (info?.changeType == EntityChangeType.Update)
|
|
||||||
flagFuncUpdateLaststate = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (info != null)
|
|
||||||
{
|
|
||||||
states.Add(info.state);
|
|
||||||
oldinfo = info;
|
|
||||||
|
|
||||||
if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
|
|
||||||
await funcUpdate(isLiveUpdate);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isFlushCommanding = false;
|
finally
|
||||||
|
{
|
||||||
|
isFlushCommanding = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,58 +113,64 @@ namespace FreeSql
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
while (_prevCommands.Any() || states.Any())
|
try
|
||||||
{
|
{
|
||||||
var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
|
while (_prevCommands.Any() || states.Any())
|
||||||
if (oldinfo == null) oldinfo = info;
|
|
||||||
var isLiveUpdate = false;
|
|
||||||
flagFuncUpdateLaststate = false;
|
|
||||||
|
|
||||||
if (_prevCommands.Any() == false && states.Any() ||
|
|
||||||
info != null && oldinfo.changeType != info.changeType ||
|
|
||||||
info != null && oldinfo.stateType != info.stateType ||
|
|
||||||
info != null && oldinfo.entityType != info.entityType)
|
|
||||||
{
|
{
|
||||||
|
var info = _prevCommands.Any() ? _prevCommands.Dequeue() : null;
|
||||||
|
if (oldinfo == null) oldinfo = info;
|
||||||
|
var isLiveUpdate = false;
|
||||||
|
flagFuncUpdateLaststate = false;
|
||||||
|
|
||||||
if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
|
if (_prevCommands.Any() == false && states.Any() ||
|
||||||
|
info != null && oldinfo.changeType != info.changeType ||
|
||||||
|
info != null && oldinfo.stateType != info.stateType ||
|
||||||
|
info != null && oldinfo.entityType != info.entityType)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (info != null && oldinfo.changeType == info.changeType && oldinfo.stateType == info.stateType && oldinfo.entityType == info.entityType)
|
||||||
|
{
|
||||||
|
//最后一个,合起来发送
|
||||||
|
states.Add(info.state);
|
||||||
|
info = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (oldinfo.changeType)
|
||||||
|
{
|
||||||
|
case EntityChangeType.Insert:
|
||||||
|
funcInsert();
|
||||||
|
break;
|
||||||
|
case EntityChangeType.Delete:
|
||||||
|
funcDelete();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
isLiveUpdate = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
|
||||||
|
{
|
||||||
|
if (states.Any())
|
||||||
|
{
|
||||||
|
funcUpdate(isLiveUpdate);
|
||||||
|
if (info?.changeType == EntityChangeType.Update)
|
||||||
|
flagFuncUpdateLaststate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info != null)
|
||||||
{
|
{
|
||||||
//最后一个,合起来发送
|
|
||||||
states.Add(info.state);
|
states.Add(info.state);
|
||||||
info = null;
|
oldinfo = info;
|
||||||
|
|
||||||
|
if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
|
||||||
|
funcUpdate(isLiveUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (oldinfo.changeType)
|
|
||||||
{
|
|
||||||
case EntityChangeType.Insert:
|
|
||||||
funcInsert();
|
|
||||||
break;
|
|
||||||
case EntityChangeType.Delete:
|
|
||||||
funcDelete();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
isLiveUpdate = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isLiveUpdate || oldinfo.changeType == EntityChangeType.Update)
|
|
||||||
{
|
|
||||||
if (states.Any())
|
|
||||||
{
|
|
||||||
funcUpdate(isLiveUpdate);
|
|
||||||
if (info?.changeType == EntityChangeType.Update)
|
|
||||||
flagFuncUpdateLaststate = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (info != null)
|
|
||||||
{
|
|
||||||
states.Add(info.state);
|
|
||||||
oldinfo = info;
|
|
||||||
|
|
||||||
if (flagFuncUpdateLaststate && oldinfo.changeType == EntityChangeType.Update) //马上与上个元素比较
|
|
||||||
funcUpdate(isLiveUpdate);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isFlushCommanding = false;
|
finally
|
||||||
|
{
|
||||||
|
isFlushCommanding = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -802,3 +802,14 @@
|
|||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
||||||
|
<summary>
|
||||||
|
批量注入 Repository,可以参考代码自行调整
|
||||||
|
</summary>
|
||||||
|
<param name="services"></param>
|
||||||
|
<param name="globalDataFilter"></param>
|
||||||
|
<param name="assemblies"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user