麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

DevExpress ASP.NET 使用經驗談(1)-XPO模型的創建

2019-11-17 01:53:44
字體:
來源:轉載
供稿:網友

DevExPRess asp.net 使用經驗談(1)-XPO模型的創建

這個系列通過一些簡單例子循序漸進,介紹DevExpress ASP.NET控件的使用。先來介紹一下XPO的使用,安裝的DevExpress版本為DXperienceUniversal-12.2.4,使用Visual Studio 2012+Sql Server2005。

什么是XPO?

XPO 是 eXpress Persistent Objects的縮寫,它是DevExpress公司推出的一個運行在.NETFramwork平臺上的ORM工具。Persistent Objects翻譯過來時“持久化對象”的意思,所謂的持久化,也就是將數據存儲下來,比如存在數據庫、文件等這樣的形式“永久的”保存下來。XPO是一個ORM工具,它在應用程序代碼和數據庫之間扮演了一個中間層的角色,起到中間橋梁這樣一個作用,簡單而言,就是將面向對象編程所建立的對象在數據庫中做一個映射,使之和數據庫中的表建立一一對應的關系。我們在面向對象編程的時候,只需要關心程序中的“對象”就可以了,XPO會自動的把我們對對象的操作反應到數據庫中。

安裝過程在此略過。。。

安裝成功后,VS2012新建項目,就會有已安裝DevExpress類別選項,如下圖所示:

(圖一) 新建解決方案

(圖二)添加類庫項目

(圖三) 建立XPO的ORM模型向導

(圖四)選擇映射到現有數據庫

(圖五)選擇數據庫,輸入UserName,PassWord,此處勾選導和存儲過程,后續步驟將出現存儲過程選擇界面

(圖六) 確認選擇的表

(圖七)確認選擇的存儲過程

(圖八)數據庫表、字段前綴、后綴等設置

(圖九)完成

(圖十) 新建模型未保存界面

(圖十一)新建模型保存后,生成XXXCode目錄

(圖十二) 生成代碼目錄結構

自動生成的代碼:

ConnectionHelper.cs

using System;using DevExpress.Xpo;using DevExpress.Data.Filtering;namespace XPOModel.DemoDB{    public static class ConnectionHelper    {        public const string ConnectionString = @"XpoProvider=MSSqlServer;data source=.;user id=demo;password=demo;initial catalog=DemoDB;Persist Security Info=true";        public static void Connect(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)        {            XpoDefault.DataLayer = XpoDefault.GetDataLayer(ConnectionString, autoCreateOption);            XpoDefault.session = null;        }        public static DevExpress.Xpo.DB.IDataStore GetConnectionProvider(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)        {            return XpoDefault.GetConnectionProvider(ConnectionString, autoCreateOption);        }        public static DevExpress.Xpo.DB.IDataStore GetConnectionProvider(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption, out IDisposable[] objectsToDispoSEOnDisconnect)        {            return XpoDefault.GetConnectionProvider(ConnectionString, autoCreateOption, out objectsToDisposeOnDisconnect);        }        public static IDataLayer GetDataLayer(DevExpress.Xpo.DB.AutoCreateOption autoCreateOption)        {            return XpoDefault.GetDataLayer(ConnectionString, autoCreateOption);        }    }}

StoredProcHelper.cs

using System;using DevExpress.Xpo;using DevExpress.Data.Filtering;namespace XPOModel.DemoDB{    public static class SprocHelper    {        public static DevExpress.Xpo.DB.SelectedData ExecAspNetPager(Session session, int pageSize, int curPage, string viewName, string fieldName, string orderField, string orderType, string where1)        {            return session.ExecuteSproc("", new OperandValue(pageSize), new OperandValue(curPage), new OperandValue(viewName), new OperandValue(fieldName), new OperandValue(orderField), new OperandValue(orderType), new OperandValue(where1));        }        public static DevExpress.Xpo.DB.SelectedData ExecSelectjqGridUsers(Session session, int PageIndex, string SortColumnName, string SortOrderBy, int NumberOfRows)        {            return session.ExecuteSproc("SelectjqGridUsers", new OperandValue(PageIndex), new OperandValue(SortColumnName), new OperandValue(SortOrderBy), new OperandValue(NumberOfRows));        }        public static System.Collections.Generic.ICollection<SelectjqGridUsersResult> ExecSelectjqGridUsersIntoObjects(Session session, int PageIndex, string SortColumnName, string SortOrderBy, int NumberOfRows)        {            return session.GetObjectsFromSproc<SelectjqGridUsersResult>("SelectjqGridUsers", new OperandValue(PageIndex), new OperandValue(SortColumnName), new OperandValue(SortOrderBy), new OperandValue(NumberOfRows));        }        public static XPDataView ExecSelectjqGridUsersIntoDataView(Session session, int PageIndex, string SortColumnName, string SortOrderBy, int NumberOfRows)        {            DevExpress.Xpo.DB.SelectedData sprocData = session.ExecuteSproc("SelectjqGridUsers", new OperandValue(PageIndex), new OperandValue(SortColumnName), new OperandValue(SortOrderBy), new OperandValue(NumberOfRows));            return new XPDataView(session.Dictionary, session.GetClassInfo(typeof(SelectjqGridUsersResult)), sprocData);        }        public static void ExecSelectjqGridUsersIntoDataView(XPDataView dataView, Session session, int PageIndex, string SortColumnName, string SortOrderBy, int NumberOfRows)        {            DevExpress.Xpo.DB.SelectedData sprocData = session.ExecuteSproc("SelectjqGridUsers", new OperandValue(PageIndex), new OperandValue(SortColumnName), new OperandValue(SortOrderBy), new OperandValue(NumberOfRows));            dataView.PopulateProperties(session.GetClassInfo(typeof(SelectjqGridUsersResult)));            dataView.LoadData(sprocData);        }    }}

Users.cs

using System;using DevExpress.Xpo;using DevExpress.Data.Filtering;namespace XPOModel.DemoDB{    public partial class Users    {        public Users(Session session) : base(session) { }        public override void AfterConstruction() { base.AfterConstruction(); }    }}

Users.Designer.cs

using System;using DevExpress.Xpo;using DevExpress.Data.Filtering;namespace XPOModel.DemoDB{    public partial class Users : XPLiteObject    {        int fUserID;        [Key(true)]        public int UserID        {            get { return fUserID; }            set { SetPropertyValue<int>("UserID", ref fUserID, value); }        }        string fUserName;        [Size(50)]        public string UserName        {            get { return fUserName; }            set { SetPropertyValue<string>("UserName", ref fUserName, value); }        }        string fFirstName;        [Size(50)]        public string FirstName        {            get { return fFirstName; }            set { SetPropertyValue<string>("FirstName", ref fFirstName, value); }        }        string fLastName;        [Size(50)]        public string LastName        {            get { return fLastName; }            set { SetPropertyValue<string>("LastName", ref fLastName, value); }        }        string fMiddleName;        [Size(50)]        public string MiddleName        {            get { return fMiddleName; }            set { SetPropertyValue<string>("MiddleName", ref fMiddleName, value); }        }        string fEmailID;        [Size(50)]        public string EmailID        {            get { return fEmailID; }            set { SetPropertyValue<string>("EmailID", ref fEmailID, value); }        }    }}

至此,已經完成了從數據庫到XPO模型的創建,接下來開始使用XPO對象,看看它給我們帶來了什么?

下一節中,我們繼續使用XPO,結合XpoDataSource與ASPxGridView,以極少的代碼,完成單表CRUD操作。

-------------------------------------------------------------------------------------------------------

附示例數據庫的建庫腳本,使用SQL

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双性精h调教灌尿打屁股的文案 | 欧美日韩国产成人在线观看 | 4p一女两男做爰在线观看 | 精品一区二区在线播放 | 色羞羞| 成年免费视频黄网站在线观看 | 亚洲精品成人久久久 | 免费观看国产精品视频 | 玖草| 97超碰资源站 | 亚洲国产视频网 | 成品片a免人视频 | 国产乱淫av一区二区三区 | 久久久久久免费 | 中文字幕欧美专区 | 国产精品久久久久久久久久久久午夜 | 国产精品亚洲综合一区二区三区 | 日韩视频―中文字幕 | 激情视频免费观看 | 欧美日韩亚洲精品一区二区三区 | 国产午夜亚洲精品午夜鲁丝片 | 91在线视频免费观看 | 全黄裸片武则天一级第4季 偿还电影免费看 | 538在线精品 | 亚洲精品在线观看免费 | 亚州综合一区 | 国产精品av久久久久久网址 | chengrenzaixian| 中文字幕在线播放第一页 | 国产成人综合在线视频 | av在线免费播放网站 | 免费一级欧美在线观看视频 | 国产成人aⅴ | 失禁高潮抽搐喷水h | 91精品中文字幕 | 欧美视频国产 | 黄视频免费在线观看 | 国产美女爽到喷白浆的 | 国产91一区| 免费人成年短视频在线观看网站 | 天天操很很操 |