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類表示查詢的結果集