DevExpress ASP.NET 使用經驗談(3)-XPO對象的使用(使用指定數據連接)


首先,我們貼出上一節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查找數據...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM