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;
|
||||
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)
|
||||
while (_prevCommands.Any() || states.Any())
|
||||
{
|
||||
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);
|
||||
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;
|
||||
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)
|
||||
while (_prevCommands.Any() || states.Any())
|
||||
{
|
||||
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);
|
||||
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>
|
||||
</members>
|
||||
</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