首先,我們貼出上一節Users類XPO對象的保存代碼,直接建立的XPO Session會話,因為沒有與我們所期望的數據層建立綁定,
所以程序自動創建了一個Access數據庫,作為默認數據庫操作對象來使用,即程序目錄下的DevConsole.vshost.mdb數據庫文件。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XPOModel.DemoDB;
namespace DevConsole
{
class Program
{
static void Main(string[] args)
{
Users obj = new Users(new DevExpress.Xpo.Session());
obj.FirstName = "Dave";
obj.LastName = "Annable";
obj.EmailID = "Admin@gmail.com";
obj.Save();
Console.Write("已經通過XPO對象完成對象保存!");
Console.ReadLine();
}
}
}
修改配置文件,增加ConnectionStrings配置節:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
</startup>
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.;Initial Catalog=DemoDB;user id=demo;password=demo;Integrated Security=false" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
修改代碼如下,將數據層與會話綁定。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using XPOModel.DemoDB;
namespace DevConsole
{
class Program
{
static void Main(string[] args)
{
string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;//獲取數據庫連接
IDataLayer datalayer = new SimpleDataLayer(XpoDefault.GetConnectionProvider(provider, AutoCreateOption.DatabaseAndSchema));//建立數據層XPO
DevExpress.Xpo.Session session = new DevExpress.Xpo.Session(datalayer); //將數據層和會話綁定
Users obj = new Users(session);
obj.FirstName = "Dave";
obj.LastName = "Annable";
obj.EmailID = "Admin@gmail.com";
obj.Save();
Console.WriteLine("已經通過XPO對象完成對象保存,保存對象ID:" + obj.UserID);
Console.WriteLine(string.Format("ID:{0},FirstName:{1},LastName:{2}", obj.UserID, obj.FirstName, obj.LastName));
Console.ReadLine();
}
}
}
點擊運行該控制台程序,查看Sql Server DemoDB數據庫,Users表已經存在剛才添加的數據。

圖一 執行XPO對象的保存

圖二 查看Sql Server數據庫保存結果
對於XPO對象的保存,我們使用了Save,如果需要通過XPO對象執行刪除,我們可以采用Delete方法,代碼如下:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DevExpress.Data.Filtering;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using XPOModel.DemoDB;
namespace DevConsole
{
class Program
{
static void Main(string[] args)
{
string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;//獲取數據庫連接
IDataLayer datalayer = new SimpleDataLayer(XpoDefault.GetConnectionProvider(provider, AutoCreateOption.DatabaseAndSchema));//建立數據層XPO獨有的
DevExpress.Xpo.Session session = new DevExpress.Xpo.Session(datalayer); //將數據層和會話綁定
Users obj = new Users(session);
obj.FirstName = "Dave";
obj.LastName = "Annable";
obj.EmailID = "Admin@gmail.com";
obj.Save();
Console.WriteLine("1.已經通過XPO對象完成對象保存,保存結果:");
Console.WriteLine(string.Format("ID:{0},FirstName:{1},LastName:{2}", obj.UserID, obj.FirstName, obj.LastName));
obj.Delete();
Console.WriteLine("3.刪除對象ID:" + obj.UserID);
Console.ReadLine();
}
}
}
那么,有沒有Load方法,可以讀取一條Users數據呢? 找遍之后,發現居然沒有,那我們通過什么方式獲取指定一條Users數據呢?
通過
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DevExpress.Data.Filtering;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using XPOModel.DemoDB;
namespace DevConsole
{
class Program
{
static void Main(string[] args)
{
string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;//獲取數據庫連接
IDataLayer datalayer = new SimpleDataLayer(XpoDefault.GetConnectionProvider(provider, AutoCreateOption.DatabaseAndSchema));//建立數據層XPO獨有的
DevExpress.Xpo.Session session = new DevExpress.Xpo.Session(datalayer); //將數據層和會話綁定
Users obj = new Users(session);
obj.FirstName = "Dave";
obj.LastName = "Annable";
obj.EmailID = "Admin@gmail.com";
obj.Save();
Console.WriteLine("1.已經通過XPO對象完成對象保存,保存結果:");
Console.WriteLine(string.Format("ID:{0},FirstName:{1},LastName:{2}", obj.UserID, obj.FirstName, obj.LastName));
Console.WriteLine();
CriteriaOperator criteria = CriteriaOperator.Parse("[UserID]='" + obj.UserID + "'");
Users objnew = session.FindObject<Users>(criteria);
Console.WriteLine("2.找到一個Users數據,ID為:" + objnew.UserID);
Console.WriteLine();
objnew.Delete();
Console.WriteLine("3.刪除對象ID:" + objnew.UserID);
Console.ReadLine();
}
}
}
執行結果如下:

圖三 執行Save、Delete方法,通過CriteriaOperator表達式FindObject獲取對象
下一節中,我們將簡單介紹如何通過CriteriaOperator查找數據...
博文作者:挪威森林(Coding of life)
博文出處:http://www.cnblogs.com/allenlf/
主要研究:Web開發框架、ORM框架、WCF框架、醫療行業軟件開發(HRP、EMR、CP、OA)
