• How to: Use the Entity Framework Model First in XAF 如何:在 XAF 中使用EF ModelFirst


    This topic demonstrates how to use the Model First entity model and a DbContext entity container in an XAF application.

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

    1. Add the Entity Data Model

    In the Solution Explorer, right-click the MySolution.ModuleBusinessObjects folder and create a model as described in the Create Model section of the Model First topic. Specify MySolutionModel as the new file's name. Design a data model that includes the Employee and Task entities, and generate a database from this model. The image below demonstrates the model that will be used in this example.

       添加实体数据模型

    在"解决方案资源管理器"中,右键单击 MySolution.Module_BusinessObjects 文件夹,并创建模型,如"模型第一"主题的"创建模型"部分中所述。将 MySolutionModel 指定为新文件的名称。设计包含员工和任务实体的数据模型,并使用此模型生成数据库。下图演示了此示例中使用的模型。

    EF_EmployeeAndTaskDataModel

    Note 注意
    • In this topic, the Entity Framework Designer is not described in detail. For information on using the Entity Framework Designer, refer to the following MSDN article: Model First
    • You can use the Generate from database feature of the Entity Data Model Wizard to reverse engineer an existing database instead of designing a data model manually.
    • 在本主题中,不详细介绍实体框架设计器。有关使用实体框架设计器的信息,请参阅以下 MSDN 文章:模型优先
    • 您可以使用实体数据模型向导的"从数据库生成"功能对现有数据库进行反向工程,而不是手动设计数据模型。

    2. Apply Attributes to Entity Classes

    XAF automatically collects entities declared in modules, and adds them to the Application Model when the DevExpress.ExpressApp.EF.v19.2.dll or DevExpress.ExpressApp.EF.45.v19.2.dll assembly is referenced. In the Model Editor, you can see List and Detail View nodes created for the Employee and Task objects. You can create navigation items to access these objects in the UI (see Add an Item to the Navigation Control).

    将属性应用于实体类

    XAF 自动收集模块中声明的实体,并在引用 DevExpress.ExpressApp.ef.v19.2.dll 或 DevExpress.ExpressApp.EF.45.v19.2.dll 程序集时将它们添加到应用程序模型中。在模型编辑器中,您可以看到为"员工"和"任务"对象创建的列表和详细视图节点。您可以创建导航项以在 UI 中访问这些对象(请参阅向导航控件添加项)。

    Note 注意
    Currently, the metadata information on EF classes and their properties is not propagated to the Model Editor at design time. As a result, tools like Filter Builder cannot display object structure. The workaround is provided in the EF - Display data model properties in the design time Model Editor ticket. We will consider supporting this scenario in future XAF versions.
    目前,EF 类及其属性的元数据信息不会在设计时传播到模型编辑器。因此,筛选器生成器等工具无法显示对象结构。解决方法在设计时间模型编辑器票证中的 EF - 显示数据模型属性中提供。我们将考虑在将来的 XAF 版本中支持此方案。
     

    However, you may want to customize the UI in code by applying XAF built-in attributes such as DefaultClassOptionsAttribute or ImageNameAttribute. In order to apply attributes to designed entity classes, you must first declare the partial Employee and Task classes that will supplement the designer-generated declarations. Once you have declared these classes, you can apply the required attributes.

    但是,您可能希望通过应用 XAF 内置属性(如默认类选项属性或图像名称属性)来自定义代码中的 UI。为了将属性应用于设计中的实体类,必须首先声明将补充设计器生成的声明的部分员工类和任务类。声明这些类后,可以应用所需的属性。

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

    To apply attributes to the Employee and Task object properties (e.g., apply the Browsable(false) attribute to the Id properties to hide the key values in the UI), utilize the approach demonstrated in the How to: Apply Attributes to Entity Properties when Using Model First topic.

    要将属性应用于员工和任务对象属性(例如,将可浏览(false)属性应用于 ID 属性以隐藏 UI 中的键值),请使用"如何:使用模型时将属性应用于实体属性"中演示的方法第一个主题。

    3. Run the Application

    You can now run both WinForms and ASP.NET applications. The UI for each platform is automatically generated for your data model.

        运行应用程序

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

    WinForms:

    EF_RuntimeWin

    ASP.NET:

    EF_RuntimeWeb

    Note 注意
    To learn how to fill the database with predefined data, refer to the How to: Supply Initial Data for the Entity Framework Data Model topic.
    要了解如何使用预定义数据填充数据库,请参阅"如何:为实体框架数据模型提供初始数据"主题。
  • 相关阅读:
    LINQ 为C#开发的一种类似于SQL的语言
    Perl函数集
    职场新鲜人:为什么女生拼不过男生?
    字符串查找 cmd find命令
    职业规划师:如何给自己挑选一个好老板
    C# const, readonly, static readonly
    转载:抽象工厂模式与工厂方法模式区别
    教育法则
    poj 1509 Glass Beads
    hdu 2602 Bone Collector
  • 原文地址:https://www.cnblogs.com/foreachlife/p/How-to-Use-the-Entity-Framework-Model-First-in-XAF.html
Copyright © 2020-2023  润新知