MemberChangeConflict Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет ситуацию, в которой попытка обновления оказывается неудачной, так как значения членов были обновлены с того момента, когда были в последний раз считаны клиентом.
public ref class MemberChangeConflict sealed
public sealed class MemberChangeConflict
type MemberChangeConflict = class
Public NotInheritable Class MemberChangeConflict
- Наследование
-
MemberChangeConflict
Примеры
// 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: {0}", 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: {0}", mi.Name);
Console.WriteLine("current value: {0}", currVal);
Console.WriteLine("original value: {0}", origVal);
Console.WriteLine("database value: {0}", databaseVal);
Console.ReadLine();
}
}
}
' Add 'Imports System.Reflection' for this section.
Dim db As New Northwnd("...")
'...
Try
db.SubmitChanges(ConflictMode.ContinueOnConflict)
Catch ex As ChangeConflictException
Console.WriteLine("Optimistic concurrency error.")
Console.WriteLine(ex.Message)
For Each occ As ObjectChangeConflict In db.ChangeConflicts
Dim metatable As MetaTable = db.Mapping.GetTable(occ.Object.GetType)
Dim entityInConflict As Object = occ.Object
Console.WriteLine("Table name: " & metatable.TableName)
Console.Write("Customer ID: ")
Console.WriteLine(entityInConflict.CustomerID)
For Each mcc As MemberChangeConflict In occ.MemberConflicts
Dim currVal = mcc.CurrentValue
Dim origVal = mcc.OriginalValue
Dim databaseVal = mcc.DatabaseValue
Dim mi As MemberInfo = mcc.Member
Console.WriteLine("Member: " & mi.Name)
Console.WriteLine("current value: " & currVal)
Console.WriteLine("original value: " & origVal)
Console.WriteLine("database value: " & databaseVal)
Console.ReadLine()
Next
Next
End Try
Комментарии
В следующем примере показано, как получить сведения о конфликтуемых членах.
Свойства
CurrentValue |
Возвращает текущее значение участвующего в конфликте члена. |
DatabaseValue |
Возвращает значение базы данных участвующего в конфликте члена. |
IsModified |
Возвращает значение, указывающее, были ли данные члена изменены с момента последнего чтения или обновления базы данных. |
IsResolved |
Возвращает значение, указывающее, был ли конфликт разрешен. |
Member |
Возвращает метаданные об участвующем в конфликте члене. |
OriginalValue |
Возвращает исходное значение участвующего в конфликте члена. |
Методы
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
Resolve(Object) |
Указывает значение, которое следует задать как текущее значение для участвующего в конфликте члена. |
Resolve(RefreshMode) |
Использует параметр RefreshMode, чтобы автоматически указать значение, которое следует задать как текущее для участвующего в конфликте члена. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |