您的位置:首页 > 其它

教程 1 - 使用 XPO 的第一个数据感知应用程序

2013-11-01 21:42 375 查看
DevExpress ORM Tool > DevExpress
ORM Tool > Getting
Started > Tutorial
1 - Your First Data-Aware Application with XPO

在本课程中,将引导您创建一个简单的 WinForm 应用程序,可以在其中输入和查看customer(顾客)的详情。

秀出来
The complete sample project is available in the DevExpress Code Examples database at http://www.devexpress.com/example=E4555. Depending on the target platform type (ASP.NET, WinForms, etc.), you can either run this example online or download an auto-executable sample.


创建持久化对象

使用 eXpress Persistent Objects (XPO) 需要做的第一件事情是定义持久化对象类。持久化对象被存储为数据库表中的记录并且封装了所有的关系。类的属性作为字段值存储至记录之中,并且持久化对象的集合相当于数据表。所需要做的是定义持久化对象类,并且 XPO
会自动生成数据库和所需要的表结构。 XPO 提供了 Data Model Designer(数据模型设计器)以简化持久化类的创建。

启动新的 Windows 窗体应用程序项目。可以使用标准的 Windows 窗体应用程序 项目模板。可以在设计器中(Model
First 方法) 或使用代码 (Code First 方法)创建持久化类.。Model First 建议适用于初学者。

Model First

在 Project 菜单中点击 Add New Item 。显示 Add
New Item 对话框。





在 DevExpress 目录中,选择 DXperience ORM Data Model Wizard 模板并点击 Add。



在弹出的数据模型向导中,选择 Create a new database 并点击 Next。





指定数据库连接设置并点击 next。在本课中,通过 Windows Authentication 访问 Microsoft SQL Server 的本地实例,并且使用 XpoTutorial1 数据库。





注意:此时此刻,XpoTutorial1 数据库还不存在。之后将由 XPO 自动创建。

点击 Finish 完成向导。XPO Data Model Designer 将会打开。


在空白的设计器表现右键单击并选择 Properties。在弹出的 属性窗口中,指定持久化类的命名空间,例如,XpoTutorial1.DataModel。





添加新的持久化类,从工具栏上拖拽 XpObject 项目到设计器。





要指定新类的名称,在方框头部双击 XpObject1 文本并修改为 Customer,或者在弹出的属性窗口中,修改对象的名称的 Name 属性。









要添加 Name 持久化属性,从工具栏中拖拽 Field 项目并拖放到 Customer 之上。重命名新添加的字段为 Name。





以相同的方式,添加 Age 属性。通过属性窗口修改它的 Column
Type 为 UInt16。





注意:默认类型是 string,所以上一步添加的 Name 属性是 string 类型。

在设计器中保存改变。

设计器已经创建了 Customer 类的声明,它继承于 XPObject,带有默认的构造函数与对象初始化方法。个体持久化对象 (类的实例),将作为记录存储至 "Customer" 表中,同时类属性(Name 和 Age)
映射到表的字段值。

Code First

作为使用设计器的另外一种选择,可以编写代码手动添加持久化类。以下的 Customer 类代码等同于设计器的实现。

<span style="font-family:SimSun;">using DevExpress.Xpo;
// ...
public partial class Customer : XPObject {
public Customer(Session session) : base(session) { }
public override void AfterConstruction() { base.AfterConstruction(); }
string fName;
public string Name {
get { return fName; }
set { SetPropertyValue<string>("Name", ref fName, value); }
}
ushort fAge;
public ushort Age {
get { return fAge; }
set { SetPropertyValue<short>("Age", ref fAge, value); }
}
}</span>


可以使用 DXperience v14.1 ORM Persistent Object 工程项目模板简化此类的创建。该模板创建 XPObject 的派生类并在项目中添加必要的程序集的引用。

数据模型绑定用户界面

通常使用 XPCollection 或 XPView 从数据库中获取持久化对象。从工具栏上拖拽 XPCollection 组件并放置到窗体之上。使用默认的 Form1.cs(Form1.vb)
窗体,或者通过 DXperience v14.1 Form 模板添加 XtraForm 以保持与 XtraGrid 控件一直的外观。日后将会使用。





下一步,指定持久化类至集合的 XPCollection.ObjectClassInfo 属性。如果在下拉窗口中没有该类,重新编译项目并再试。




从工具栏中拖拽 Session 组件并放置至窗体之上。使用属性窗口,将其指定至 XPBaseCollection.Session 属性。




XPCollection 可以绑定至可视化控件,因为它实现了标准的 .NET IBindingList and ITypedList 接口。添加
GridControl 控件到窗体上并且指定表格的GridControl.DataSource 属性为 xpCollection1。





注意:此外,可以设置 GridControl.UseEmbeddedNavigator 属性为 True 启用 Data Navigator。

XPCollection 被指定至表格控件后,表格自动为所有的持久化属性生成列(查看上面的图)。在此例中,有 Name 和 Age 列
(Oid 字段是由 XPO 自动创建的)。因为 XPObject.Oid 值是自动生成,从表格中移除 Oid 列,或者使该列只读以便最终用户无法编辑它。

使用代码创建和持久化对象

处理窗体的 Load 事件,向 Customer 表中添加记录并且填充至 XPCollection。

private void XtraForm1_Load(object sender, EventArgs e) {
if (xpCollection1.Count == 0) {
var customer1 = new Customer(session1);
customer1.Name = "John";
customer1.Age = 21;
customer1.Save();
xpCollection1.Add(customer1);
var customer2 = new Customer(session1);
customer2.Name = "Bob";
customer2.Age = 37;
customer2.Save();
xpCollection1.Add(customer2);
}
}


XPBaseObject.Save 方法会检查 database 是否包含 Customer 表。 (默认情况下,该名称匹配于所保存的对象的名称。)如果这个表不存在,将会被创建。然后它将保存新数据至数据表。

初始化数据库连接

Model First
初始化数据访问层,在应用程序的 Main 方法中,调用 ConnectionHelper.Connect。

using DevExpress.Xpo.DB;
// ...
[STAThread]
static void Main() {
ConnectionHelper.Connect(AutoCreateOption.DatabaseAndSchema);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
DevExpress.Skins.SkinManager.EnableFormSkins();
Application.Run(new XtraForm1());
}


Code First

通过 ORM Data Model Wizard,ConnectionHelper 类自动添加至项目中。如果你没有使用向导,手动指定 Data Layer 到静态类 XpoDefault.DataLayer 属性替代调用 ConnectionHelper.Connect。
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
// ...
[STAThread]
static void Main() {
public const string ConnectionString =
@"XpoProvider=MSSqlServer;data source=(local);integrated security=SSPI;initial catalog=XpoTutorial1";
XpoDefault.DataLayer = XpoDefault.GetDataLayer(ConnectionString, AutoCreateOption.DatabaseAndSchema);
// …
}


结果

运行项目。XPO 为持久化对象自动生成数据库。如果数据库不存在,XPO 创建它。用户可以在表格中查看和编辑数据。无需编写任何代码来保存数据:所有的更改都将自动持久化。下图显示结果。





创建简单的数据感知应用程序,它可以使最终用户查看和编辑 customer 详情 (name 和 age) 。数据存储在 MS SQL Server 数据库。
声明 Customer 类,其实例表示为 Customer 表的记录。XPO 会自动生成数据库。
添加新记录并保存至 Customer 表。每个记录代表着 Customer 对象。它的公共属性表示表中的字段。
最终用户可以通过 XtraGrid's data navigator (显示在表格的底部)添加新记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐