站点图标 江湖人士

Entity Framework Core 入门简介

EF Core获取上下文SQL语句

EF Core获取上下文SQL语句

Entity Framework Core是EF 6.x之后的实体框架的新版本。 Entity Framework Core 入门简介,它是开源,轻量级,可扩展的实体框架数据访问技术的跨平台版本。

Entity Framework 是一个对象/关系映射(O / RM)框架。 它是对ADO.NET的增强,它为开发人员提供了一种访问和存储数据库中数据的自动机制。

Entity Framework Core 入门简介

EF Core旨在与.NET Core应用程序一起使用。 但是,它也可以与基于标准.NET 4.5+框架的应用程序一起使用。

下图说明了支持的应用程序类型,.NET框架和操作系统。

Entity Framework Core 入门简介

EF Core 版本历史

EF Core VersionRelease Date
EF Core 2.0August 2017
EF Core 1.1November 2016
EF Core 1.0June 2016

EF Core on GitHub: https://github.com/aspnet/EntityFrameworkCore

EF Core Roadmap: docs.microsoft.com/en-us/ef/core/what-is-new/roadmap

Track EF Core’s issues at https://github.com/aspnet/EntityFrameworkCore/issues

EF Core Official Documentation: https://docs.microsoft.com/ef/core

EF Core 开发方式

EF Core支持两种开发方法,第一种是:Code-First(代码先行,即先设计实体,EF Core迁移时自动生成数据库及表结构);第二种是:Database-First(数据库先行,按传统模式,先设计数据库再开发)。使用EF Core时,优先支持的是代码先行的开发模式,当然您可以使用数据库先行模式用于开发,另外从EF Core 2.0开始,不支持DB模型的可视化设计器或向导,因此如果您要使用数据库先行开发方式,得全部手工打造。

在代码优先方法中,EF Core API使用基于域类中提供的约定和配置的迁移来创建数据库和表。此方法在域驱动设计(DDD)中很有用。

在数据库优先方法中,EF Core API使用EF Core命令基于现有数据库创建域和上下文类。这在EF Core中的支持有限,因为它不支持可视化设计器或向导。

EF Core vs EF 6

Entity Framework Core 是用于.NET Core应用程序的 Entity Framework 的新增和改进版本。 EF Core是新的,所以仍然不如EF 6那么成熟。

EF Core继续支持以下功能和概念,与EF 6相同。

  1. DbContext & DbSet
  2. Data Model
  3. Querying using Linq-to-Entities
  4. Change Tracking
  5. SaveChanges
  6. Migrations

EF Core将逐步包含EF 6的大部分功能。 但是,EF 6中有一些功能在EF Core 2.0中不受支持,例如:

  1. EDMX/ Graphical Visualization of Model
  2. Entity Data Model Wizard (for DB-First approach)
  3. ObjectContext API
  4. Querying using Entity SQL.
  5. Automated Migration
  6. Inheritance: Table per type (TPT)
  7. Inheritance: Table per concrete class (TPC)
  8. Many-to-Many without join entity
  9. Entity Splitting
  10. Spatial Data
  11. Lazy loading of related data
  12. Stored procedure mapping with DbContext for CUD operation
  13. Seed data
  14. Automatic migration

EF Core包含EF 6.x不支持的以下新功能:

  1. 简单的关系配置
  2. 批量插入、更新、删除操作
  3. In-memory provider for testing
  4. 支持IoC(控制反转)
  5. 唯一约束
  6. 隐藏属性( Shadow properties )
  7. 备用键(Alternate keys )
  8. 全局查询过滤器(Global query filter)
  9. 字段映射(Field mapping )
  10. 连接池(DbContext pooling )
  11. 用于处理断开的实体图的更好模式(Better patterns for handling disconnected entity graphs )

此处了解有关EF Core和EF 6差异的更多信息

EF Core 数据库提供商(支持ef core的驱动)

Entity Framework Core 使用提供者模型来访问许多不同的数据库。EF Core将提供程序包含为您需要安装的NuGet包。

下表列出了EF Core的数据库提供程序和NuGet程序包。

数据库NuGet包
SQL ServerMicrosoft.EntityFrameworkCore.SqlServer
MySQL的MySql.Data.EntityFrameworkCore
PostgreSQL的Npgsql.EntityFrameworkCore.PostgreSQL
SQLite的Microsoft.EntityFrameworkCore.SQLite
SQL CompactEntityFrameworkCore.SqlServerCompact40
在记忆中Microsoft.EntityFrameworkCore.InMemory

下一章中将学习如何安装EF Core

退出移动版