了解什么是C#中的实体框架

313 阅读6分钟

了解什么是C#中的实体框架

Entity Framework in C#

目录

Entity Framework是一个面向对象的映射框架(ORM),可用于存储和访问数据库中的数据。它为开发者提供了一个自动化的机制。微软将其作为.NET框架的一部分供开发使用。Entity Framework有各种功能,如LINQ查询、变化跟踪、更新和模式迁移。它还可以有效地执行SQLMySQLSQLiteAzurecosmos数据库等数据库。

在C#中使用实体框架

开发人员可以在特定领域的对象和属性中处理数据,如客户和客户地址,而不必担心保存这些数据的底层数据库表和列,这是由Entity Framework提供的。

Entity Framework在以下场景中使用:

  • 创建一个MVC网络应用程序
  • 设置网站风格
  • 安装Entity Framework 6
  • 创建数据模型
  • 创建数据库上下文
  • 用测试数据初始化数据库
  • 设置EF 6以使用LocalDB
  • 创建控制器和视图

实体框架的开发方法

主要有三种方法来创建实体框架。

1.代码优先的方法

这种方法首先针对一个不存在的数据库,然后创建它。它允许开发者用C#和.NET类来定义和制作新模型。在这种方法中,你可以使用空数据库,也可以添加表。

2.模型先行法

这种模型最适合于数据库不存在的新项目。这个模型使用EDMX文件存储,可以由开发者查看和编辑。

3.数据库第一方法

这种方法是代码优先方法和模型优先方法的替代品。它从项目中的数据库创建模型和代码,并将它们与数据库和开发人员连接起来。

实体框架的特点

1.跨平台

EF是一个跨平台的框架,可以在Linux、Windows和Mac上运行。

2.变更跟踪

实体框架对发生在实例上的各种变化进行跟踪,这些变化需要提交给数据库。

3.3.保存

它帮助执行基于数据库实体上发生的变化的插入、更新和删除操作。

实体框架的基本工作流程

  1. 首先,你需要定义模型。定义模型包括领域类、源自DbContext的上下文类和配置。
  2. 要插入数据,你需要为一个上下文添加一个域对象,并调用savechanges()方法。你需要使用插入命令并将其执行到数据库中。
  3. 对于读取数据,用你喜欢的语言如C#或.NET执行LINQ-to-Entities查询会很有用。EF API会将查询转换为SQL查询,并提供给数据库执行。
  4. 对于编辑、更新、删除和移除实体对象,你应该调用savechanges()方法。EF API将在数据库中建立和执行这些命令。

实体框架是如何工作的?

实体框架API可以将领域变化映射到数据库模式,翻译和执行LINQ查询到SQL。它还有助于跟踪变化并将其保存到数据库中。

1.实体数据模型

EF API通过制作实体数据模型开始其工作。它代表了整个数据库:概念模型,存储模型,以及它们之间的映射。

2.查询

EF API使用EDM将LINQ查询转换为关系型数据库的SQL查询,并将其转换为对象实体。

3.3.保存

当savechanges()命令被调用时,它执行编辑、更新、删除和移除操作。ChangeTrack跟踪所有的行动和活动。

Entity Framework中的Context类

在使用EF 6或EF Core时,它是最关键的类。它有助于在数据库模式中执行创建、读取、更新和删除命令。它是Entity Framework中的一个派生类。它也被用来配置域类,映射数据库,跟踪变化,以及存储缓存。

using System.Data.Entity;

public class BankAccContext : DbContext

{

BankAccContext()

{

}

// 实体

public DbSet<AccHolder> Accountholder { get; set; }

public DbSet<AccNo> Accountnumber { get; set; }

public DbSet<AccType> Accounttype { get; set; }

}

什么是Entity Framework中的实体?

实体是实体框架中的一个类,用于映射数据库表。

EF API可以将每个实体映射到表,实体的每个属性映射到数据库中的一个列。

实体框架中的实体主要包括两种类型。

1.标量属性

标量属性是那些原始的属性。它映射了数据库表中的一个存储数据的列。例如,学生ID、学生姓名、班级是学生实体的标量属性。

2.导航属性

这个属性负责一个实体与另一个实体的关系。有两种类型的导航属性。

i) 参考导航属性

当一个实体拥有另一种类型的实体属性的时候,它被称为参考导航属性。它指向一个实体,但代表了一个实体的多重性。

ii) 集体导航属性

当一个实体拥有通用集合类型的属性时,它被称为集体导航属性。它有许多的多重性。

实体框架中的实体类型

在实体框架中,有两种类型的实体。

1.POCO实体(Plain Old CLR Objects)

它是一个不依赖于任何框架特定基类的实体类。它是普通的.NET CLR类,这就是为什么它被命名为 "Plain Old CLR Objects"。它支持许多操作,如更新、创建和删除,这些操作是由实体数据模型产生的。

2.动态代理实体(POCO Proxy)

动态代理实体是运行时类,包裹着POCO实体。这些实体是懒惰的加载类。它只被EF 6所支持;EF Core 2.0还不支持它。

实体状态

EF API负责在实体的整个生命周期内维护实体的状态。每个实体根据上下文类执行的操作拥有一个状态。在EF 6中,实体状态可以用System.Data.Entity.EntityState这个枚举来表示。

实体框架中的持久化

在实体框架中,有两种类型的持久化方案。

1.连接的场景

在这种情况下,同一个上下文类被用来检索和保存实体。它在整个生命周期中保持对所有数据库的跟踪。它对同一网络的数据库很有用。

2.断开的情景

在这种情况下,一个不同的上下文被用来检索和保存数据。一个上下文类的实例被用来检索数据,另一个被用来保存数据。

结论

实体框架在数据库领域的应用非常广泛。在这篇文章中,我们发现了C#中的实体框架,并了解了它的各种功能和类型。