XAF之ObjectSpace

翻译 2012年03月27日 21:15:29

之前对XAF的objectspace一直懵懵懂懂,不明白为什么有时候在CreateObjectSpace有时候又直接从View的属性获取,直到细读了官方文档http://documentation.devexpress.com/#Xaf/clsDevExpressExpressAppObjectSpacetopic

现将其简要翻译一下:

语法

Visual Basic
Public Class ObjectSpace Inherits Object, IObjectSpace,IDisposable
C#
public class ObjectSpace : object, IObjectSpace,IDisposable

备注

      在XAF架构的最下层是XPO,XPO库为XAF提供了UnitOfWork类创建和管理数据库的数据。一个UnitOfWork包含了一个全部已加载/已创建的对象的列表,并且缓存了对象所有的改变,当调用某些方法时,UnitOfWork就会将这些数据推送到数据库保存。为了管理UnitOfWork和行为和执行某些额外的数据操作,XAF提供了ObjectSpace类。每一个View都分配了一个特定的ObjectSpace。该ObjectSpace负责该View的对象获取和创建。而且,一个ObjectSpace跟踪它的对象的所有改变,并在必要的时候将这些改变保存到数据库。要访问一个View的ObjectSpace,使用View.ObjectSapce属性。此外,你也可以访问一个对象集合的ObjectSpace并管理其拥有的全部对象,要达到该目的,使用CollectionSourceBase.ObjectSpace属性。

     调用ObjectSpace的方法CreateObject创建一个持久化对象(persistent object)。此时,该ObjectSpace会管理这个新建的对象的生命周期。在调用ObjectSpace的CommitChanges方法前,ObjectSpace会跟踪该对象的全部更改。

    要保存当前ObjectSpace包含对象的所有更改,调用CommitChanges方法。这些更改包括了:新建,修改或删除对象(查阅 IsModified, SetModified, ModifiedChanged, ModifiedObjects 和 Delete)。  比如,在执行SaveSaveAndClose动作时会调用CommitChanges方法。

注意

为确保持久化对象属性的更改能被缓存和提交,请在setter设置器内调用三个参数的SetPropertyValue方法。这是实现持久化属性的推荐方式。

          ObjectSpace也能执行一些辅助操作:搜索要求的对象(FindObject),获取需要的对象信息(GetPropertyName,GetKeyPropertyType,GetKeyValue),获取需要的对象(GetObject,GetObjectByKey)等等。

         要访问当前ObjectSpace使用的UnitOfWork,使用Session属性。详情查阅XPO文档。

         当新建了一个View后你可能需要创建一个新的ObjectSpace,此时使用XafApplication.CreateObjectSpace方法。注意,在某些情形下,你可以在当前ObjectSpace中创建一个View。例如:代表非聚合集合的Nested ListView就可以在父View的ObjectSpace中创建。当你需要一个独立的ObjectSpace提交更改时才需要创建一个Nested ObjectSpace,其类为NestedObjectSpace。Nested Object Space提交它自己对象的更改给父ObjectSpace。然后,这些更改将和父ObjectSpace的更改一同提交给数据库保存。例如:聚合集合的nested ListView在Nested ObjectSpace中创建。当需要创建一个nested ObjectSpace时,建议使用父ObjectSpace的CreateNestedObjectSpace方法。

注意

       当处理大量数据的处理创建或删除时,不适合使用ObjectSpace。在这种场景下,这些操作要么直接在数据库级别(使用SQL查询),要么使用轻量级的UnitOfWork类。作为替代的选择,也可以尝试使用不属于某个View的独立的ObjectSpace。这种ObjectSpace通过XafApplication.CreateObjectSpace方法获得。


XAF应用开发教程(六)控制器

转载自:http://www.cnblogs.com/foreachlife/p/xafviewcontrollerAndValidationContext.html 是的,XAF也是MVC...
  • feigamesnb
  • feigamesnb
  • 2015年12月24日 08:17
  • 1088

XAF应用开发教程(一) 创建项目

XAF是DevExpress公司的快速开发框架,全称eXpress Application Framework,是企业信息系统的开发利器,快速开发效果显著,在.net框架中,笔者至今没有找到一款可以与...
  • feigamesnb
  • feigamesnb
  • 2015年12月24日 08:06
  • 772

XAF框架简介-C#语言

1 XAF的适用范围: These are the applications described at the beginning of this overview - those design...
  • ejinxian
  • ejinxian
  • 2014年11月18日 19:11
  • 825

XAF应用开发教程(六)控制器

转载自:http://www.cnblogs.com/foreachlife/p/xafviewcontrollerAndValidationContext.html 是的,XAF也是MVC...
  • feigamesnb
  • feigamesnb
  • 2015年12月24日 08:17
  • 1088

XAF应用开发教程(三)业务对象模型之引用类型与关联关系

转载自:http://www.cnblogs.com/foreachlife/p/xafonetomany.html 本节介绍信息系统开发中最常见的问题,引用关系,一对多关系,多对多关系。 ...
  • feigamesnb
  • feigamesnb
  • 2015年12月24日 08:13
  • 692

XAF信息系统快速框架介绍

转载自:http://www.cnblogs.com/foreachlife/p/xaf.html Xaf也算是本人最早使用的ORM系统了,受朋友所托转载下,哈哈 我们还是说说信息系统开发效率这件...
  • feigamesnb
  • feigamesnb
  • 2015年12月24日 08:02
  • 1887

Xaf自定义属性CheckboxList多选编辑器

好久没有更新博客了,有时是有时间没有内容,有时是有内容没有时间。今天则时刚好两者都有了。 最近一段使用Xaf做开发,功能很强大,开发效率很高(在熟练使用的情况下),就不说了。但devexpress1...
  • littlechang
  • littlechang
  • 2013年12月24日 17:02
  • 1871

1.1XAF框架开发视频教程-简单的订单管理实现过程,视频,提纲,及教程源码

下面是视频教程的提纲: PPT版本的提纲下载 本节源码下载 XAF框架开发教程 快速实现企业级信息系统开发的利器 XAF简介 ´  开发公司:www.devexpress.com,老牌控件...
  • ftxv95x5
  • ftxv95x5
  • 2017年02月22日 22:07
  • 113

误打误撞XAF中HCategory_ListView显示问题

XAF中的树形结构可以使用继承HCategory类来实现,继承后,你不需要做任何动作,显示视图已经是树形列表了。 学习中遇到这样一个情况,先添加了一个HCategory子类“部门”,XAF自动创建了...
  • mouhk
  • mouhk
  • 2018年01月02日 10:41
  • 4

XAF 应用程序模型基础[转]

eXpressApp Framework > Concepts > Application Model > 应用程序结构基础 业务应用程序是复杂的工程。从头开始建立一个应用程序,你不得不实现数据存储、...
  • lnddlzq
  • lnddlzq
  • 2013年05月31日 11:35
  • 501
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XAF之ObjectSpace
举报原因:
原因补充:

(最多只允许输入30个字)