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.Module\BusinessObjects 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 指定为新文件的名称。设计包含员工和任务实体的数据模型,并使用此模型生成数据库。下图演示了此示例中使用的模型。

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:

ASP.NET:

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.
要了解如何使用预定义数据填充数据库,请参阅"如何:为实体框架数据模型提供初始数据"主题。

How to: Use the Entity Framework Model First in XAF 如何:在 XAF 中使用EF ModelFirst的更多相关文章

  1. Entity Framework Model First下改变数据库脚本的生成方式

    在Entity Framework Model First下, 一个非常常见的需求是改变数据库脚本的生成方式.这个应用场景是指,当用户在Designer上单击鼠标右键,然后选择Generate Dat ...

  2. Entity Framework 之Database first(数据库优先)&Model First(模型优先)

    一.什么是Entity Framework 1.1 实体框架(EF)是一个对象关系映射器,使.NET开发人员使用特定于域的对象与关系数据.它消除了需要开发人员通常需要编写的大部分数据访问代码.简化了原 ...

  3. C# ORM—Entity Framework 之Database first(数据库优先)&Model First(模型优先)(一)

    一.什么是Entity Framework 1.1 实体框架(EF)是一个对象关系映射器,使.NET开发人员使用特定于域的对象与关系数据.它消除了需要开发人员通常需要编写的大部分数据访问代码.简化了原 ...

  4. 【转】MVC Model建模及Entity Framework Power Tool使用

    MVC如使用Code-First代码优先约定,先建实体类,再根据实体类创建数据库. 在创建实体类后,新建一个数据上下文类,如下: publicclassMusicStoreDB : DbContext ...

  5. [转]Creating an Entity Framework Data Model for an ASP.NET MVC Application (1 of 10)

    本文转自:http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/creating-a ...

  6. How to: Supply Initial Data for the Entity Framework Data Model 如何:为EF数据模型提供初始数据

    After you have introduced a data model, you may need to have the application populate the database w ...

  7. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  8. Entity Framework 与 面向对象

    说要分享,我了个*,写了一半放草稿箱了两个星期都快发霉了,趁着周末写完发出来吧. 文章分为五部分: 基础.类讲述的是用到的一些EF与面向对象的基础: 业务是讲怎么划分设计业务: 设计模式和工作模式讲述 ...

  9. Entity Framework 6 Recipes 2nd Edition(9-1)译->用Web Api更新单独分离的实体

    第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...

随机推荐

  1. 牛客竞赛-Who killed Cock Robin

    Who killed Cock Robin? I, said the Sparrow, With my bow and arrow,I killed Cock Robin. Who saw him d ...

  2. HTML <input> placeholder 属性

    css ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #909; } :-moz-placeholder { /* Mo ...

  3. 笔记||Python3之面向对象

    面向对象编程:简称OOP. 是一种程序设计思想.oop把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 在python中,所有数据类型都可以视为对象,也可以自定义对象.自定义的对象数据类 ...

  4. Sql Server存储过程详解

    存储过程--查询: if (exists (select * from sys.objects where name = 'GetUser')) drop proc GetUser --判断存储过程是 ...

  5. 【面试】386- JavaScript 面试 20 个核心考点

    点击上方"前端自习课"关注,学习起来~ 引言 Javascript是前端面试的重点,本文重点梳理下 Javascript 中的常考基础知识点,然后就一些容易出现的题目进行解析.限于 ...

  6. 【JS】324- JS中的内存管理(中高级前端必备)

    前言 像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()用于分配内存和释放内存.而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在不再 ...

  7. Spring-security-oAuth2分享

    Spring-security-oAuth2分享 oAuth2简介 OAuth 2.0是用于授权的行业标准协议.OAuth 2.0致力于简化客户端开发人员的工作,同时为Web应用程序,桌面应用程序,移 ...

  8. git下载问题

    官网下载:打不开,可用git for Windows 下载 地址:https://github.com/git-for-windows/git/releases

  9. JS中&&和||的理解

    运算符可以从三个不同的层次进行理解. 第一层理解 当操作数都是布尔值时,"&&"对两个值执行布尔与(AND)操作. 复制代码代码如下: x==0 && ...

  10. Vue中slot插槽的使用