嗨,有没有人知道如何处理删除并发事件,如果一个实体被删除,并打开了两个具有相同实体的选项卡,并在第一个选项卡中删除了该实体,然后尝试在第二个选项卡中对该实体进行更改并保存了该操作?
如果两个用户编辑同一个实体,并发RowVersion的示例:
class MyClass
{
// Some Code
}
void FindCurrectMyClass(const int val, MyClass* myClassPtr)
{
switch(val)
{
case(0):
{
myClassPtr = &myClass0;
}
break;
case(1):
{
myClassPtr = &myClass1; // get here and myClassPtr is not null
}
break;
case(2):
{
myClassPtr = &myClass2;
}
break;
}
}
void main()
{
MyClass myClass0;
MyClass myClass1;
MyClass myClass2;
MyClass* myClassPtr = nullPtr;
FindCurrectMyClass(1, myClassPtr );
myClassPtr->Func(); // myClassPtr is null
}
删除实体的示例不确定如果两个用户进行不同的更改(例如,同时修改和删除:
protected override void ApplyAbpConceptsForModifiedEntity(EntityEntry entry, long? userId, EntityChangeReport changeReport)
{
//Get the entity being tracked.
var entity = entry.Entity;
if (entity.GetType().GetProperty("RowVersion") != null)
{
entry.OriginalValues["RowVersion"] = entry.CurrentValues["RowVersion"];
}
base.ApplyAbpConceptsForModifiedEntity(entry, userId, changeReport);
}