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包含了一个持续对象的列表,它可以对每个操作都进行跟踪。

  • 相关阅读:
    ADO.NET 中的数据并发
    net中前台javascript与后台c#函数相互调用
    js正则函数match、exec、test、search、replace、split使用介绍集合
    jQuery遍历Table tr td td中包含标签
    SQL你必须知道的-查询聚合分组排序
    haut-1280 诡异的迷宫
    int、long long等的取值范围
    codeforce 855B
    nyoj-2357
    codeforces 858A
  • 原文地址:https://www.cnblogs.com/lihh/p/2610400.html
Copyright © 2011-2022 走看看