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 数据库。
- 点击 Finish 完成向导。XPO Data Model Designer 将会打开。
- 在空白的设计器表现右键单击并选择 Properties。在弹出的 属性窗口中,指定持久化类的命名空间,例如,XpoTutorial1.DataModel。
-
添加新的持久化类,从工具栏上拖拽 XpObject 项目到设计器。
-
要指定新类的名称,在方框头部双击 XpObject1 文本并修改为 Customer,或者在弹出的属性窗口中,修改对象的名称的 Name 属性。
-
要添加 Name 持久化属性,从工具栏中拖拽 Field 项目并拖放到 Customer 之上。重命名新添加的字段为 Name。
-
以相同的方式,添加 Age 属性。通过属性窗口修改它的 Column Type 为 UInt16。
- 在设计器中保存改变。
设计器已经创建了 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。
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);
}
}
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
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 (显示在表格的底部)添加新记录。