XPO(eXpress Persistent Objects)是对象和关系数据库之间的桥梁。就是将面向对象编程所建立的对象在数据库中做一个映射,使之和数据库中的表建立一一对应的关系。使XPO,应用程序无需修改代码就可以兼容多种数据库 (MS Access, MS SQL Server, MS SQL Server CE, MS SQL Azure, MySQL, Oracle, PostgreSql, Firebird, PervasiveSQL, VistaDB, SQL Anywhere, Advantage, DB2, SQLite,Sybase) 。
以访问SQLite数据库为例
步骤1- 引用
DevExpress.Xpo.v18.2.dll
System.Data.SQLite.dll (如果是其他数据库,则引用其他的库)
步骤2 -创建实体对象
class WorkPiece :XPObject
{
public string FirstName;
public string LastName;
public WorkPiece(Session session) : base(session) { }
}
说明:
- XPO使用Session表示一个数据库的连接
步骤3- 连接数据库
var ConnectionString = "XpoProvider=SQLite;Data Source=system.db3";
XpoDefault.DataLayer = XpoDefault.GetDataLayer(ConnectionString,AutoCreateOption.DatabaseAndSchema);
说明:
- XpoDefault是一个全局设置,后面的数据访问默认都会使用这个全局(底层对应数据提供者的会话)
- GetDataLayer方法可以根据连接字符连接到特定的数据库
- GetDataLayer方法第2个参数可以用来自动创建数据库或表
- 连接字符串也可以使用 SQLiteConnectionProvider.GetConnectionString(“system.db3”)获取。不同的数据库都有对应的ConnectionProvider,例如MSSqlConnectionProvider ,PostgreSqlConnectionProvider
步骤4- 实现对象的CRUD
增加
WorkPiece p=new WorkPiece(XpoDefault.Session);
p.FirstName = "guo";
p.LastName="wushi";
p.Save();
- 使用默认的连接(Xpo.Session)完成操作。
- 每个对象都会自动增加一个OID字段作为主键。
删除
contact.delete();
修改
和新增代码一样,但一个对象的OID(唯一标记)一样,则表示的是修改。
查找
string queryString = "原生SQL语句";
public SelectedData GetEmployeesSimpleData() {
return session.ExecuteQuery(queryString);
}
- SelectedData类表示查询的结果集