基本概念

普通类:就是一个简单的定义的类。

持久化类:可以把类的实例中的数据透时的保存到数据库中的类。

什么是XPO

XPO是由大名鼎鼎的DevExpress提供的一种商业的ORM工具。

从概念上来说XPO是一种简单的对象映射技术,是一种把一个普通类变成持久化类的技术。也就是让一个普通的类和数据库中的一个表对应。把表中的字段和类中的字段对应,你可以透明的将一条记录直接保存到数据库,而不需要和ADO.net打交道。

下面是XPO中的类层次结构

这些类到底有啥作用呢?

这些类提供了将一个类的自身的数据保存到数据库中的所有功能。只要你继承其中一个类,你的类就马上变成了一个可以持久化的类了。也就是具有了将类自己的数据保存到数据库的能力。

看看顶层的XPBaseObject对象,他是XPO持久类中的基类,为其它的类提供了一个基本实现。当你的类继承XPBaseObject,你必须为你的类指定一个主键的字段。他不支持延后删除技术。

XPLiteObject 基本和基类没什么区别 但是他不支持数据库并发中的锁定,和延后删除的技术。

XPCustomeObject 和基类一样,但是他支持并发数据库中的锁定,同时他也和基类要提供自定义主键的。他是支持延后删除技术)

XPObject 这个应该是最常用的,他提供自已的OID字段,因而如果你的类继承于它,就不需要为提供主键。(最全的类了,支持延后删除,支持锁定)

什么叫延后删除:一个持久化类,他是和数据库中的一个记录对应的,当你执行一个删除一个持久化类的动作的时候,XPO不会马上就去在数据库上执行真正的数据删除,而是将这条记录标记为删除,而且已经后不会在读取他。。当你要真正删除时,可以调用Session.PurgeDeletedObjects()来完全删除这些标记的记录

类名

延后删除

数据锁定

提供OID字段

XPBaseObject

不支持

支持

不提供

XPLiteObject

不支持

不支持

不提供

XPCustomObject

支持

支持

不提供

XPObject

支持

支持

提供

终合上图,一般实用类,好象就是XPBaseObject或者XPObject类了。。。

那么到底如何用XPO将一个类变成持久化类呢?看下面的代码

using DevExpress.Xpo;

// ...

public class Contact : XPObject {

public string FirstName;

public string LastName;

}

这样一个类就是一个持久化类了,他就有了将他的实例的数据持久化到数据库中的能力了。

持久化类现在创建好,如何使用呢?

Contact c = new Contact();//和普通类一样没两样

c.FirstName = “大”;

c.LastName = “名”; //初始化值

c.Save(); //这个Save那来的,就是继承于XPObject。

这样Save()就会直接将Contact一个实例的信息直接保存到数据库中了,书面点说就是将一个实例的信息持久化到了一个数据源中。

那么到底Save()这个方法将数据保存到那里去了,Acess还是Oracle,还是Sql Server中呢??

其时XPO为了方便用户,当你不给XPO指定一个数据库时,他会默认使用Access。也就是说你刚才Contact实例的信息是保存到一个Access文件中了。现在做一个完整的例子来演示下。

using System;

using System.Data;

using DevExpress.Xpo.DB;

using DevExpress.Data;

using DevExpress.Xpo;

using XPOModel;

namespace MyXPO

{

public class MyXPO

{

static void Main(string args[])

{

Contact c = new Contact();

c.Name = “test”;

c.Detail = “eatafad”;

c.Save();

}

}

class Contact : XPObject

{

private string name;

private String detail;

public String Name

{

get { return name; }

set { name = value; }

}

public string Detail

{

get { return detail; }

set { detail = value; }

}

}

}

运行这个程序后,可以在工程文件夹的bin/debug下面找到一个叫MyXPO的ACESS的文件。这个名字是和你的项目的名字是相同的,也就是说和你的程序集的名字是相同的。

当你打开Access文件时,你会看到一个和类名相同的表,这就是XPO帮你创建好的。非常傻瓜式的。

也就是说,只要你把一个类,让他继承于XPObject,那么这个类就是一个可以持久化的类。了。他就有了把他的字段的数据持久化到数据库的能力,也就是将数据保存到数据库的能力了。你只要执地一个Save方法,XPO就会自动的把这个实例的字段的数据保存到数据库中。

DevExpress XPO 学习笔记相关推荐

  1. DevExpress XPO 开发指南 简要

    最近在看devexpress   安装程序中的代码Demos ..  C:\Users\Public\Documents\DevExpress Demos 16.1\Components\WinFor ...

  2. DELPHI学习笔记1

    DELPHI学习笔记1 listbox从文件中读取列表的操作 ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+'aaa ...

  3. 获取oracle服务端时间,XPO学习一(获取数据库服务器时间)

    在开始学习XPO时,需要连接到数据库且需要获得数据库服务器时间,连接ORACLE Session.DefaultSession.Connection = new OracleConnection(Da ...

  4. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  5. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  8. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  9. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

最新文章

  1. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)
  2. ORA-01436: 用户数据中的CONNECT BY 循环
  3. 三种复位方式: 同步复位、异步复位、异步复位同步释放
  4. python 笔记:函数
  5. C++ 重载函数调用运算符 | 再探lambda,函数对象,可调用对象
  6. phpMyAdmin密码设置
  7. asp.net利用RAR实现文件压缩解压缩(转)
  8. 2020成考C语言答案,2020年_优学院_C语言程序设计_章节答案
  9. css3和jQuery实现一个简单的标签页效果
  10. 解析markdown_利用 markdown 生成页面实践
  11. Java设计模式学习总结(12)——结构型模式之外观模式
  12. electronic-wechat高分屏下的缩放修改
  13. Spark 基础 —— class与object,面向对象、类与伴生对象(companion object)
  14. 论文笔记_S2D.54_2020-TIP_用于精确深度估计的无监督多视图约束卷积网络
  15. 十分钟理解线性代数的本质_如何理解线性代数?
  16. java 多线程,android 移动开发,日语学习,各项新闻RSS吐血分享
  17. [iOS]判断设备是否越狱
  18. 苹果证书导出p12文件
  19. 《少年pi》:每个人心中都有一只孟…
  20. 如何删除git暂存区的文件

热门文章

  1. Introduction to CMake by Example
  2. 如何在Mac上卸载软件?用这三种方法简单、干净、快速
  3. dell服务器设置bios设置u盘启动不了系统,戴尔台式机bios设置图解教程|dell bios设置u盘启动...
  4. 算法系列——贝尔曼福特算法(Bellman-Ford)
  5. ServiceNow获得FedRAMP高基准授权
  6. 私货——OIer 必备网站集
  7. java等待所有子线程执行完毕再执行
  8. Compact Multi-Signatures for Smaller Blockchains学习笔记
  9. 扫雷c语言完整源代码,C语言扫雷源码
  10. Slf4j+logback的使用与配置以及详情介绍