您的位置:知识库 »

在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测

作者: Jeffrey Zhao  来源: 博客园  发布时间: 2008-09-20 01:04  阅读: 4698 次  推荐: 0   原文链接   [收藏]  
摘要:Linq to Sql提供了另外一种检测并发更新冲突的方式:使用记录的时间戳。
[1] 使用时间戳1
[2] 使用时间戳2
[3] 使用时间戳3

 

那么,我们一直说出现了“并发更新冲突”,那么发生冲突后又会出现什么问题呢?我们来看一个略有些复杂的示例:

try
{
 LinqToSqlDemoDataContext dataContext = new LinqToSqlDemoDataContext();

    Order order1 = dataContext.Orders.Single(o => o.OrderID == 1);
    Order order2 = dataContext.Orders.Single(o => o.OrderID == 2);
    Order order3 = dataContext.Orders.Single(o => o.OrderID == 3);

    Console.WriteLine("Order 1:" + order1.Introduction);
    Console.WriteLine("Order 2:" + order2.Introduction);
    Console.WriteLine("Order 3:" + order3.Introduction);
    Console.WriteLine();

    order1.Introduction = "Order 1 modified.";
    order2.Introduction = "Order 2 modified.";
    order3.Introduction = "Order 3 modified.";

    dataContext.Log = Console.Out;
    // 在下面的语句上设置一个断点
    dataContext.SubmitChanges();
}
catch (ChangeConflictException e)
{
    Console.WriteLine("---------- ' + e.Message + ' ----------");
}

LinqToSqlDemoDataContext db = new LinqToSqlDemoDataContext();
Order o1 = db.Orders.Single(o => o.OrderID == 1);
Order o2 = db.Orders.Single(o => o.OrderID == 2);
Order o3 = db.Orders.Single(o => o.OrderID == 3);

Console.WriteLine("Order 1: " + o1.Introduction);
Console.WriteLine("Order 2:" + o2.Introduction);
Console.WriteLine("Order 3:" + o3.Introduction);

Console.ReadLine();

假设我们的数据表里有以下三条记录:

OrderID Name Introduction record_version
1 Order 1 This is order 1 <Binary data>
2 Order 2 This is order 2 <Binary data>
3 Order 3 This is order 3 <Binary data>
0
0
标签:LINQ to SQL

热门文章

    最新文章

      最新新闻

        热门新闻