EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:在XAF中首先使用实体​​框架模型

本主题演示了如何在XAF应用程序中使用Model First实体模型和DbContext实体容器。

1.添加实体数据模型

在“解决方案资源管理器”中,右键单击MySolution.Module \ BusinessObjects文件夹,然后按照“模型优先”主题的“创建模型”部分中的描述创建模型。指定MySolutionModel作为新文件的名称。设计一个包含Employee和Task实体的数据模型,并从该模型生成数据库。下图演示了此示例中将使用的模型。

EF_EmployeeAndTaskDataModel

注意
  • 在本主题中,不详细描述实体框架设计器。有关使用Entity Framework Designer的信息,请参阅以下MSDN文章:Model First
  • 您可以使用实体数据模型向导的“从数据库生成”功能对现有数据库进行反向工程,而无需手动设计数据模型。

2.将属性应用于实体类

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内置属性(例如DefaultClassOptionsAttributeImageNameAttribute)在代码中自定义UI 。为了将属性应用于设计的实体类,必须首先声明部分EmployeeTask类,以补充设计者生成的声明。声明这些类后,即可应用所需的属性。

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; }
    }
}

要将属性应用于EmployeeTask对象属性(例如,将Browsable(false)属性应用于Id属性以隐藏UI中的键值),请使用“如何:使用时将属性应用于实体属性”中演示的方法。模特第一主题。

3.运行应用程序

现在,您可以同时运行WinForms和ASP.NET应用程序。系统会自动为您的数据模型生成每个平台的UI。

WinForms:

EF_RuntimeWin

ASP.NET:

EF_RuntimeWeb

注意

若要学习如何用预定义的数据填充数据库,请参阅“如何:为实体框架数据模型提供初始数据”主题。

相关文章

转载保留此链接,注明出处