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
在 DevExpress 目录中,选择 DXperience ORM Data Model Wizard 模板并点击 Add。
在弹出的数据模型向导中,选择 Create a new database 并点击 Next。
指定数据库连接设置并点击 next。在本课中,通过 Windows Authentication 访问 Microsoft SQL Server 的本地实例,并且使用 XpoTutorial1 数据库。
添加新的持久化类,从工具栏上拖拽 XpObject 项目到设计器。
要指定新类的名称,在方框头部双击 XpObject1 文本并修改为 Customer,或者在弹出的属性窗口中,修改对象的名称的 Name 属性。
要添加 Name 持久化属性,从工具栏中拖拽 Field 项目并拖放到 Customer 之上。重命名新添加的字段为 Name。
以相同的方式,添加 Age 属性。通过属性窗口修改它的 Column Type 为 UInt16。
设计器已经创建了 Customer 类的声明,它继承于 XPObject,带有默认的构造函数与对象初始化方法。个体持久化对象 (类的实例),将作为记录存储至 "Customer" 表中,同时类属性(Name 和 Age) 映射到表的字段值。
Code First
作为使用设计器的另外一种选择,可以编写代码手动添加持久化类。以下的 Customer 类代码等同于设计器的实现。
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("Name", ref fName, value); }
}
ushort fAge;
public ushort Age {
get { return fAge; }
set { SetPropertyValue("Age", ref fAge, value); }
}
}
可以使用 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());
}
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 创建它。用户可以在表格中查看和编辑数据。无需编写任何代码来保存数据:所有的更改都将自动持久化。下图显示结果。