如何使用ApplyAbpConceptsForDeletedEntity处理并发实体(并发)

时间:2019-01-21 12:11:50

标签: entity-framework

嗨,有没有人知道如何处理删除并发事件,如果一个实体被删除,并打开了两个具有相同实体的选项卡,并在第一个选项卡中删除了该实体,然后尝试在第二个选项卡中对该实体进行更改并保存了该操作?

如果两个用户编辑同一个实体,并发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);
    }

0 个答案:

没有答案