8,497
社区成员
发帖
与我相关
我的任务
分享
// 用户A和用户B同时获取相同的记录。
var UserACustomers = dbUserA.Customers.Skip(23).Take(7);
var UserBCustomers = dbUserB.Customers.Skip(23).Take(7);
// 用户B首先修改数据并更新到数据。
foreach (var CustomerObject in UserBCustomers)
{
CustomerObject.ContactName = "UserB";
CustomerObject.ContactTitle = "UserB";
CustomerObject.Country = "UserB";
CustomerObject.City = "UserB";
CustomerObject.Address = "UserB";
}
dbUserB.SubmitChanges();
// 然后才是用户A修改数据,并尝试更新到数据库,此时将引发并发冲突。
foreach (var CustomerObject in UserACustomers)
{
CustomerObject.ContactName = "UserA";
CustomerObject.ContactTitle = "UserA";
CustomerObject.Country = "UserA";
CustomerObject.City = "UserA";
CustomerObject.Address = "UserA";
}
dbUserA.SubmitChanges(ConflictMode.FailOnFirstConflict);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data.Linq;
namespace Demo03Ex01
{
class Program
{
static void Main(string[] args)
{
NorthwindDataContext dbUserA = new NorthwindDataContext(@"C:\LINQ\Northwind.mdf");
NorthwindDataContext dbUserB = new NorthwindDataContext(@"C:\LINQ\Northwind.mdf");
StreamWriter UserAWriter = File.CreateText(@"C:\LINQ\UserA.log");
dbUserA.Log = UserAWriter;
StreamWriter UserBWriter = File.CreateText(@"C:\LINQ\UserB.log");
dbUserB.Log = UserBWriter;
try
{
// 用户A和用户B同时获取相同的记录。
var UserACustomers = dbUserA.Customers.Skip(30).Take(7).ToList();
var UserBCustomers = dbUserB.Customers.Skip(30).Take(7).ToList();
// 用户B首先修改数据并更新到数据。
foreach (var CustomerObject in UserBCustomers)
{
CustomerObject.ContactName = "UserB";
CustomerObject.ContactTitle = "UserB";
CustomerObject.Country = "UserB";
CustomerObject.City = "UserB";
CustomerObject.Address = "UserB";
}
dbUserB.SubmitChanges();
// 然后才是用户A修改数据,并尝试更新到数据库,此时将引发并发冲突。
foreach (var CustomerObject in UserACustomers)
{
CustomerObject.ContactName = "UserA";
CustomerObject.ContactTitle = "UserA";
CustomerObject.Country = "UserA";
CustomerObject.City = "UserA";
CustomerObject.Address = "UserA";
}
dbUserA.SubmitChanges(ConflictMode.FailOnFirstConflict);
}
catch (ChangeConflictException ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine();
Console.WriteLine("Change Conflict Objects Count : {0}",
dbUserA.ChangeConflicts.Count);
}
UserAWriter.Close();
UserBWriter.Close();
}
}
}