商信互联
本主题演示了如何在XAF应用程序中使用Model First实体模型和DbContext实体容器。
在“解决方案资源管理器”中,右键单击MySolution.Module \ BusinessObjects文件夹,然后按照“模型优先”主题的“创建模型”部分中的描述创建模型。指定MySolutionModel作为新文件的名称。设计一个包含Employee和Task实体的数据模型,并从该模型生成数据库。下图演示了此示例中将使用的模型。
XAF自动收集在模块中声明的实体,并在引用DevExpress.ExpressApp.EF.v 19.2 .dll或DevExpress.ExpressApp.EF.45.v 19.2 .dll程序集时将其添加到应用程序模型。在模型编辑器中,您可以看到为Employee和Task对象创建的List和Detail View节点。您可以创建导航项来访问UI中的这些对象(请参阅将项添加到导航控件中)。
当前,有关EF类及其属性的元数据信息在设计时不会传播到模型编辑器。结果,诸如Filter Builder之类的工具无法显示对象结构。解决方法在“设计时模型编辑器”凭单的EF-显示数据模型属性中提供。我们将考虑在将来的XAF版本中支持此方案。
但是,您可能希望通过应用XAF内置属性(例如DefaultClassOptionsAttribute或ImageNameAttribute)在代码中自定义UI 。为了将属性应用于设计的实体类,必须首先声明部分Employee和Task类,以补充设计者生成的声明。声明这些类后,即可应用所需的属性。
using DevExpress.ExpressApp.DC;
using DevExpress.Persistent.Base;
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace MySolution.Module.BusinessObjects {
[MetadataType(typeof(EmployeeMetadata))]
[DefaultClassOptions, ImageName("BO_Employee")]
public partial class Employee { }
public class EmployeeMetadata {
[Browsable(false)]
public Int32 Id { get; set; }
}
[MetadataType(typeof(TaskMetadata))]
[DefaultClassOptions, ImageName("BO_Task")]
public partial class Task { }
public class TaskMetadata {
[Browsable(false)]
public Int32 Id { get; set; }
[FieldSize(FieldSizeAttribute.Unlimited)]
public String Description { get; set; }
}
}
Imports DevExpress.ExpressApp.DC
Imports DevExpress.Persistent.Base
Imports System
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations
<MetadataType(GetType(EmployeeMetadata)), _
DefaultClassOptions, ImageName("BO_Employee")> _
Partial Public Class Employee
End Class
Public Class EmployeeMetadata
Public Property Id() As Int32
End Class
<MetadataType(GetType(TaskMetadata)), _
DefaultClassOptions, ImageName("BO_Task")> _
Partial Public Class Task
End Class
Public Class TaskMetadata
Public Property Id() As Int32
Public Property Description() As String
End Class
要将属性应用于Employee和Task对象属性(例如,将Browsable(false)属性应用于Id属性以隐藏UI中的键值),请使用“如何:使用时将属性应用于实体属性”中演示的方法。模特第一主题。
现在,您可以同时运行WinForms和ASP.NET应用程序。系统会自动为您的数据模型生成每个平台的UI。
若要学习如何用预定义的数据填充数据库,请参阅“如何:为实体框架数据模型提供初始数据”主题。