internal MemberChangeConflict(ObjectChangeConflict conflict, MetaDataMember metaMember) { this.conflict = conflict; this.metaMember = metaMember; this.originalValue = metaMember.StorageAccessor.GetBoxedValue(conflict.Original); this.databaseValue = metaMember.StorageAccessor.GetBoxedValue(conflict.Database); this.currentValue = metaMember.StorageAccessor.GetBoxedValue(conflict.TrackedObject.Current); }
/// <summary> /// /// </summary> /// <param name="occ"></param> private void Dump(ObjectChangeConflict occ) { StringBuilder sb = new StringBuilder(); sb.Append("------dump occ------\r\n"); sb.AppendFormat("IsDeleted: {0}\r\n", occ.IsDeleted); sb.AppendFormat("IsResolved: {0}\r\n", occ.IsResolved); Dump(sb, occ.MemberConflicts); sb.AppendFormat("object: {0}\r\n", occ.Object); Console.WriteLine(sb.ToString()); }
private void DescribeConflict(ObjectChangeConflict conflict) { Product prod = (Product)conflict.Object; Console.WriteLine("Optimistic Concurrency Conflict in product {0}", prod.ProductID); //OptimisticConcurrencyMemberConflict foreach (MemberChangeConflict memConflict in conflict.MemberConflicts/*GetMemberConflicts()*/) { string name = memConflict.Member.Name; string yourUpdate = memConflict.CurrentValue.ToString(); string original = memConflict.OriginalValue.ToString(); string theirUpdate = memConflict.DatabaseValue.ToString(); if (memConflict.IsModified) { Console.WriteLine("'{0}' was updated from {1} to {2} while you updated it to {3}", name, original, theirUpdate, yourUpdate); } else { Console.WriteLine("'{0}' was updated from {1} to {2}, you did not change it.", name, original, theirUpdate); } } }