亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区回区在观看免费视频| 国产自产女人91一区在线观看| 国产精品免费一区| 中文字幕亚洲欧美日韩高清| 欧美理论片在线观看| 国产精品久久久久久久久久| 欧美激情国产日韩精品一区18| 久久久久久尹人网香蕉| 久久亚洲国产精品| 日韩精品视频免费在线观看| 国产视频精品自拍| 成人有码视频在线播放| 亚洲在线视频观看| 日日摸夜夜添一区| 亚洲欧美中文另类| 成人福利免费观看| 亚洲欧美一区二区三区四区| 亚洲福利视频网站| 国产精品久久久久久久久久东京| 国产视频精品在线| 色偷偷综合社区| 亚洲午夜av久久乱码| 91大神在线播放精品| 亚洲欧美中文字幕| 亚洲自拍在线观看| 欧美一级成年大片在线观看| 精品久久久久久久久久久久| 国产精品丝袜高跟| 亚洲自拍偷拍网址| 国产精品网红直播| 成人黄色av网站| 国产91av在线| 日本在线观看天堂男亚洲| www.日韩系列| 日韩欧美在线国产| 久久精品电影网站| 欧美日韩成人在线观看| 亚洲男人第一网站| 亚洲精品成人久久久| 亚洲视频在线播放| 亚洲精品小视频在线观看| 成人性生交大片免费看小说| 亚洲国产日韩欧美综合久久| 亚洲欧洲激情在线| 琪琪亚洲精品午夜在线| 国产精品一区二区三区在线播放| 日本高清久久天堂| 91精品综合久久久久久五月天| 精品久久久久久久中文字幕| 九九视频直播综合网| 国产成人免费91av在线| 亚洲午夜女主播在线直播| 国产不卡av在线免费观看| 亚洲天堂免费观看| 国产精品一区二区久久精品| 一区二区成人av| 国产精品av电影| 国产在线高清精品| 中文字幕少妇一区二区三区| 成人激情在线观看| xvideos成人免费中文版| 精品国产成人在线| 亚洲精品久久久久久久久| 韩国美女主播一区| 欧美日韩免费网站| 国产精品自产拍高潮在线观看| 成人黄色av免费在线观看| 久久久精品一区二区三区| 亚洲黄色在线观看| 国模精品视频一区二区三区| 欧美精品免费在线观看| 亚洲电影免费观看高清完整版在线| 日本欧美一二三区| 成人激情电影一区二区| 久久久成人精品| 国产精品久久久久久久久久东京| 亚洲色图第三页| 欧美激情在线播放| 疯狂蹂躏欧美一区二区精品| 欧美大片网站在线观看| 夜夜躁日日躁狠狠久久88av| 97国产一区二区精品久久呦| 亚洲综合av影视| 亚洲色图色老头| 九九九热精品免费视频观看网站| 久久久久久久久久国产精品| 美日韩在线视频| 深夜福利国产精品| 日韩视频免费观看| 日韩欧美中文字幕在线播放| 午夜精品久久久久久久99热| 欧美裸身视频免费观看| 最近2019中文字幕大全第二页| 日韩在线视频线视频免费网站| 亚洲无限乱码一二三四麻| 亚洲永久在线观看| 在线成人激情视频| 久久成人人人人精品欧| 国产精品欧美激情| www.欧美精品一二三区| 久久久综合免费视频| 国产精品青青在线观看爽香蕉| 国产精品第10页| 久久久亚洲网站| 国产精品欧美日韩久久| 日韩成人中文电影| 久久亚洲一区二区三区四区五区高| 超碰日本道色综合久久综合| 清纯唯美日韩制服另类| 久久亚洲欧美日韩精品专区| 国产成人avxxxxx在线看| 亚洲天堂网站在线观看视频| 精品久久久久人成| 亚洲国产精品一区二区三区| 日韩欧美高清在线视频| 精品亚洲一区二区三区四区五区| 综合网日日天干夜夜久久| 欧美尺度大的性做爰视频| 欧美国产精品va在线观看| 国产激情视频一区| 日韩中文在线视频| 久久伊人精品视频| 欧美激情国产日韩精品一区18| 91在线视频免费| 国产美女久久精品香蕉69| 国产精品国产三级国产专播精品人| 中文字幕精品影院| 欧美日韩国产精品| 一区二区三区国产视频| 午夜精品理论片| 91九色视频导航| 欧美中文在线观看国产| 911国产网站尤物在线观看| 91精品国产综合久久香蕉的用户体验| 国产精品久久久91| 欧美大学生性色视频| 一本色道久久88综合日韩精品| 日韩av不卡电影| 亚洲影院污污.| 2019中文字幕免费视频| 亚洲影院高清在线| 青青草一区二区| 久久久精品在线观看| 久久久女人电视剧免费播放下载| 久久久久久久久久av| 国产精品观看在线亚洲人成网| 日韩av在线高清| 精品国产依人香蕉在线精品| 国产精品人成电影在线观看| 日本成人免费在线| 久久夜精品va视频免费观看| 这里只有精品久久| www.日韩视频| 午夜免费久久久久| 亚洲日本aⅴ片在线观看香蕉| 亚洲精品aⅴ中文字幕乱码| 日韩av网址在线观看| 亚洲日韩中文字幕| 日韩欧美高清视频| 国产成人jvid在线播放| 91成人国产在线观看| 日韩av黄色在线观看| 国产精品成人v| 国产精品video|