|  | 网站首页 | .Net研究 | 
您现在的位置: 程序员之路 >> .Net研究 >> 相关资讯 >> 学习体会 >> 文章正文
赞助商链接
频 道 导 航
.Net研究频道栏目导航
相 关 文 章
db4o Tutorial 中文翻译(十)           
db4o Tutorial 中文翻译(十)
作者:xxpyeipp… 文章来源:不详 更新时间:2007-5-10 11:53:43

db4o Tutorial 中文翻译(十)

8. 事务


你有没有这样的疑问:db4o如何在一个单独的数据表中处理并发访问?像其他数据库管理系统一样,db4o具有一种事务的机制。在考虑多线程甚至远程,数据库被并行访问之前,首先要了解db4o的事务概念。


    8.1. 执行和会滚

    也许你没有注意到,我们从第一章就开始用事务了。按照定义,你已经用过了db4o的事务了。当一个数据库链接打开的时候,事务已经隐性开始了;当数据库关闭的时候,事务已经执行了。下面的代码从功能上和我们之前写的一样,只是使用了事务。
    // storeCarCommit
    Pilot pilot = new Pilot("Rubens Barrichello"99);
    Car car 
    = new Car("BMW");
    car.Pilot 
    = pilot;
    db.Set(car);
    db.Commit();

    // listAllCars
    IObjectSet result = db.Get(typeof(Car));
    ListResult(result);


    当然,可以会滚事务,以回到以前的状态:
    // storeCarRollback
    Pilot pilot = new Pilot("Michael Schumacher"100);
    Car car 
    = new Car("Ferrari");
    car.Pilot 
    = pilot;
    db.Set(car);
    db.Rollback();

    // listAllCars
    IObjectSet result = db.Get(typeof(Car));
    ListResult(result);

    8.2. 刷新活动的对象


    还有一个问题:当数据库的数据会滚的时候,内存中的对象已经被修改了。如何刷新内存中的对象呢?
    // carSnapshotRollback
    IObjectSet result = db.Get(new Car("BMW"));
    Car car 
    = (Car)result.Next();
    car.Snapshot();
    db.Set(car);
    db.Rollback();
    Console.WriteLine(car);

    当你意识到要会滚的时候,可以手动更新。
    // carSnapshotRollbackRefresh
    IObjectSet result=db.Get(new Car("BMW"));
    Car car
    =(Car)result.Next();
    car.Snapshot();
    db.Set(car);
    db.Rollback();
    db.Ext().Refresh(car, 
    int.MaxValue);
    Console.WriteLine(car);


                      What is this IExtObjectContainer construct good for? Well, it provides some functionality that is in itself stable, but the API may still be subject to change. As soon as we are confident that no more changes will occur, ext functionality will be transferred to the common IObjectContainer API.

                    [1] [2] [3] [4] [5] 下一页

                    文章录入:admin    责任编辑:admin 
                  • 上一篇文章:

                  • 下一篇文章:
                  • .Net研究栏目导航
                    网站频道导航