zoukankan      html  css  js  c++  java
  • DevExpress的 Unit of Work 初体验

    由于本人工作中需要用到DevExpress,并且看了下中文资料很少,便记录下来,方便日后查看。DevExpress的功能是非常强大的,在我初次接触的时候便有这个感觉。这次主要看Unit of Work 吧。

    Unit of Work 源自于 Session.

    我们先看下他官网上的解释:

    http://documentation.devexpress.com/#XPO/CustomDocument2138 

    1.声明:

     1 public class UOWPerson : XPObject
     2 {
     3     string fName;
     4     public UOWPerson(Session session) : base(session) { }
     5     public UOWPerson(Session session, string name) : base(session)
     6     {
     7         this.fName = name;
     8     }
     9     public string Location { 
    10         get { return GetPropertyValue<string>("Location"); }
    11         set { SetPropertyValue<string>("Location", value); }
    12     }
    13     public string Name {
    14         // We cannot use GetPropertyValue in the getter  
    15         // below because the fName field is explicitly defined 
    16         get { return fName; }
    17         set { SetPropertyValue<string>("Name", ref fName, value); }
    18     }
    19 }

    如果是对一张表进行增删改查,我们一般是用VS2010的ORM自动生成代码,也就是类似Name的这种声明方式。当然如果是对多表操作的话,还是要先写好存储过程,然后再自动生成代码。

    2.使用

    1 using(UnitOfWork uow = new UnitOfWork()) {
    2     // Create, update or delete objects 
    3     uow.CommitChanges();
    4 }

    一般就是用 CommitChanges() 这个方法,会自动更新你的操作,如果在CommitChanges()之前,uow被disposed的话,那之前的操作都会roll back,也就是说不写进数据库中,是不是相当强大,不需要写一句关于数据库操作方面的。

     3.看下Session和Unit Of Work 的区别

     1 using(UnitOfWork uow = new UnitOfWork()) {
     2     UOWPerson p = new UOWPerson(uow, "Mike");
     3     // p.Save(); when working with a Session 
     4 
     5     p = new UOWPerson(uow, "John");
     6     // p.Save(); when working with a Session 
     7 
     8     p = new UOWPerson(uow);
     9     p.Name = "Bob";
    10     p.Location = "US";
    11     // p.Save(); when working with a Session 
    12 
    13     // Save all the changes made 
    14     uow.CommitChanges();
    15 }

    可以看到如果是用Sessin的话,你需要对每一个操作都要进行Save下,但是Unit Of Work只需要最后用CommitChanges()方法,因为Unit of Work包含了一个持续对象的列表,它可以对每个操作都进行跟踪。

  • 相关阅读:
    c++ STL
    unix network programming(3rd)Vol.1 [第1章]《读书笔记系列》
    [面试题] BloomFilter 无序40亿不重复 uint 整数, 给予任意的数,求是否在这40亿之中 + 无序数组中找2个相同的值
    stm32 DAC输出音频
    Go语言项目的错误和异常管理 via 达达
    值传递
    FireFox、chrome通过插件使用IE内核,IE Tab v2
    linux cross toolsChain 交叉编译 ARM(转)
    rfc all download
    VS2005 工程在win7下使用管理员权限运行
  • 原文地址:https://www.cnblogs.com/lihh/p/2610400.html
Copyright © 2011-2022 走看看