📝 实体框架教程

48篇技术文档
  Entity Framework-继承

📅  最后修改于: 2020-11-21 07:27:35        🧑  作者: Mango

继承使创建复杂的模型成为可能,该模型可以更好地反映开发人员的想法,并减少与这些模型进行交互所需的工作。与实体一起使用的继承与与类一起使用的继承具有相同的目的,因此开发人员已经知道此功能的工作原理。让我们看下面的示例,并创建一个新的控制台应用程序项目。步骤1-通过右键单击项目名称来添加ADO.NET实体数据模型,然后选择添加→新建项…步骤2-按照模型优先方法一章中提到的所有步骤,添加一个实体并将其命...

  Entity Framework-迁移

📅  最后修改于: 2020-11-21 07:28:01        🧑  作者: Mango

在Entity Framework 5和早期版本的Entity Framework中,代码在作为.NET Framework一部分提供的核心库(主要是System.Data.Entity.dll)之间进行了拆分,并分发了其他库(主要是EntityFramework.dll),并且如下图所示,使用NuGet附带。在Entity Framework 6中,以前作为.NET框架一部分的核心API也作为N...

  Entity Framework-渴望加载

📅  最后修改于: 2020-11-21 07:28:21        🧑  作者: Mango

急切加载是一种过程,通过该过程,对一种类型的实体的查询也将相关实体作为查询的一部分进行加载。急切的加载是通过使用Include方法实现的。这意味着请求的相关数据将与数据库的查询结果一起返回。到数据源只有一个连接,在初始查询中返回了大量数据。例如,在查询学生时,急于加载他们的注册。将在单个查询中检索学生及其注册。让我们看下面的示例,在该示例中,使用急切加载从数据库中检索所有具有各自入学条件的学生。编...

  Entity Framework-延迟加载

📅  最后修改于: 2020-11-21 07:28:48        🧑  作者: Mango

延迟加载是这样的过程:首次访问引用一个或多个实体的属性时,将从数据库自动加载一个实体或一组实体。延迟加载意味着延迟相关数据的加载,直到您明确要求为止。使用POCO实体类型时,通过创建派生代理类型的实例,然后重写虚拟属性以添加加载钩子,可以实现延迟加载。延迟加载几乎是默认设置。如果您保留默认配置,并且没有在查询中明确告诉Entity Framework您需要除延迟加载以外的其他功能,那么延迟加载就是...

  Entity Framework-显式加载

📅  最后修改于: 2020-11-21 07:29:23        🧑  作者: Mango

当您禁用延迟加载时,仍然可以延迟加载相关实体,但是必须通过显式调用来完成。与延迟加载不同,对于何时运行查询,没有歧义或混淆的可能性。为此,您可以在相关实体的条目上使用Load方法。对于一对多关系,请在Collection上调用Load方法。对于一对一关系,请在Reference上调用Load方法。让我们看下面的示例,其中禁用了延迟加载,然后检索了名字为Ali的学生。然后将学生信息写在控制台上。如果...

  Entity Framework-验证

📅  最后修改于: 2020-11-21 07:30:02        🧑  作者: Mango

在本章中,让我们学习可在ADO.NET实体框架中用于验证模型数据的验证技术。实体框架提供了多种验证功能,可以将其实施到用户界面上以进行客户端验证,也可以用于服务器端验证。在Entity Framework中,数据验证是捕获应用程序中不良数据的解决方案的一部分。在默认情况下,Entity Framework使用多种数据验证方法来验证所有数据,然后再将其写入数据库。但是,实体框架是在用户界面数据验证之...

  Entity Framework-跟踪更改

📅  最后修改于: 2020-11-21 07:30:32        🧑  作者: Mango

实体框架提供了跟踪对实体及其关系所做的更改的功能,因此,当调用上下文的SaveChanges方法时,会在数据库上进行正确的更新。这是实体框架的关键功能。更改跟踪在将新记录添加到实体集合,修改或删除现有实体的同时跟踪更改。然后,所有更改都由DbContext级别保留。如果在DbContext对象被销毁之前未保存这些音轨更改,则会丢失它们。DbChangeTracker类为您提供了有关上下文正在跟踪的...

  Entity Framework-有色实体

📅  最后修改于: 2020-11-21 07:30:52        🧑  作者: Mango

在实体框架中,彩色实体主要是关于更改设计器中实体的颜色,以便开发人员可以轻松地在Visual Studio设计器中识别相关的实体组。此功能最初是在Entity Framework 5.0中引入的。此功能与性能无关。当您在一个edmx文件中有一个大型项目和许多实体时,此功能对于在不同模块中分离实体非常有用。如果您正在使用edmx文件,并且已在设计器中将其打开,则要更改颜色,请在设计窗口中选择一个实体...

  Entity Framework-代码优先方法

📅  最后修改于: 2020-11-21 07:31:17        🧑  作者: Mango

实体框架提供了三种创建实体模型的方法,每种方法各有优缺点。代码优先数据库优先模特第一在本章中,我们将简要介绍代码优先方法。一些开发人员更喜欢在代码中与Designer一起工作,而另一些开发人员则更喜欢使用其代码。对于那些开发人员,实体框架具有称为“代码优先”的建模工作流程。Code First建模工作流的目标是一个不存在的数据库,Code First将创建它。如果您的数据库为空,则还可以使用它,然...

  Entity Framework-第一个示例

📅  最后修改于: 2020-11-21 07:32:19        🧑  作者: Mango

让我们使用类定义一个非常简单的模型。我们只是在Program.cs文件中定义它们,但是在实际应用程序中,您将把类分为单独的文件和可能的单独项目。以下是我们将使用代码优先方法创建的数据模型。建立模型使用下面的学生类代码在Program.cs文件中添加以下三个类。ID属性将成为对应于此类的数据库表的主键列。登记属性是导航属性。导航属性包含与此实体相关的其他实体。在这种情况下,学生实体的“注册”属性将保...

  Entity Framework-数据注释

📅  最后修改于: 2020-11-21 07:33:55        🧑  作者: Mango

DataAnnotations用于配置将突出显示最常用的配置的类。许多.NET应用程序也可以理解DataAnnotations,例如ASP.NET MVC,它允许这些应用程序利用相同的注释进行客户端验证。 DataAnnotation属性将覆盖默认的CodeFirst约定。System.ComponentModel.DataAnnotations包含以下影响列的可空性或列大小的属性。键时间戳记并发...

  Entity Framework-Fluent API

📅  最后修改于: 2020-11-21 07:35:32        🧑  作者: Mango

Fluent API是一种指定模型配置的高级方式,除了可以使用数据批注进行的一些更高级的配置之外,它还涵盖了数据批注可以执行的所有操作。数据注释和fluent API可以一起使用,但是Code First优先使用Fluent API>数据注释>默认约定。Fluent API是配置域类的另一种方法。通过覆盖派生的DbContext上的OnModelCreating方法,通常可以访问Code Firs...

  Entity Framework-种子数据库

📅  最后修改于: 2020-11-21 07:35:56        🧑  作者: Mango

在Entity Framework中,Seed在EF 4.1中引入,可与数据库初始化程序一起使用。种子方法的一般想法是将数据初始化到由Code First创建或由Migrations演进的数据库中。此数据通常是测试数据,但也可能是参考数据,例如已知学生列表,课程等。初始化数据后,它将执行以下操作:检查目标数据库是否已经存在。如果是这样,则将当前的“代码优先”模型与数据库中存储在元数据中的模型进行比...

  Entity Framework-代码优先迁移

📅  最后修改于: 2020-11-21 07:36:48        🧑  作者: Mango

Entity Framework 4.3包括一项新的“代码优先迁移”功能,该功能使您可以随着模型随时间的变化而逐步发展数据库架构。对于大多数开发人员而言,这是对4.1和4.2版本中的数据库初始化程序选项的一项重大改进,该选项要求您在模型更改时手动更新数据库或删除并重新创建它。在Entity Framework 4.3之前,如果您的数据库中已经有数据(种子数据除外)或现有的存储过程,触发器等,则这些...

  Entity Framework-多个DbContext

📅  最后修改于: 2020-11-21 07:37:14        🧑  作者: Mango

在本章中,我们将学习在应用程序中有多个DbContext类时如何将更改迁移到数据库中。实体框架6.0中首次引入了多个DbContext。多个上下文类可以属于一个数据库或两个不同的数据库。在我们的示例中,我们将为同一数据库定义两个Context类。在下面的代码中,有两个适用于Student和Teacher的DbContext类。如您在上面的代码中看到的,有两个模型称为“学生”和“老师”。每个都与一个...