使用英语阅读

通过


如何:检索成员冲突信息

您可以使用 MemberChangeConflict 类检索有关发生冲突的各成员的信息。 在此上下文中,您可以提供任何成员的冲突的自定义处理方法。 有关详细信息,请参阅乐观并发:概述

示例

下面的代码循环访问 ObjectChangeConflict 对象。 对于每个对象,它会接着循环访问 MemberChangeConflict 对象。

备注

请将 System.Reflection 包含在内以提供 Member 信息。

C#
// Add 'using System.Reflection' for this section.
Northwnd db = new Northwnd("...");

try
{
    db.SubmitChanges(ConflictMode.ContinueOnConflict);
}

catch (ChangeConflictException e)
{
    Console.WriteLine("Optimistic concurrency error.");
    Console.WriteLine(e.Message);
    foreach (ObjectChangeConflict occ in db.ChangeConflicts)
    {
        MetaTable metatable = db.Mapping.GetTable(occ.Object.GetType());
        Customer entityInConflict = (Customer)occ.Object;
        Console.WriteLine($"Table name: {metatable.TableName}");
        Console.Write("Customer ID: ");
        Console.WriteLine(entityInConflict.CustomerID);
        foreach (MemberChangeConflict mcc in occ.MemberConflicts)
        {
            object currVal = mcc.CurrentValue;
            object origVal = mcc.OriginalValue;
            object databaseVal = mcc.DatabaseValue;
            MemberInfo mi = mcc.Member;
            Console.WriteLine($"Member: {mi.Name}");
            Console.WriteLine($"current value: {currVal}");
            Console.WriteLine($"original value: {origVal}");
            Console.WriteLine($"database value: {databaseVal}");
            Console.ReadLine();
        }
    }
}

请参阅