• 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查找数据...

  • 相关阅读:
    9。11
    9.9样式
    9.9 容我懵逼一会
    16.9.8
    16.9.6下午
    16.9.6上午
    16.9.5下午
    流程例子
    使用极酷阳光播放器做流媒体播放并不暴露视频地址
    php 文件限速下载代码
  • 原文地址:https://www.cnblogs.com/allenlf/p/4134431.html
Copyright © 2020-2023  润新知