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框架和操作系统。
EF Core 版本历史
EF Core Version | Release Date |
---|---|
EF Core 2.0 | August 2017 |
EF Core 1.1 | November 2016 |
EF Core 1.0 | June 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相同。
- DbContext & DbSet
- Data Model
- Querying using Linq-to-Entities
- Change Tracking
- SaveChanges
- Migrations
EF Core将逐步包含EF 6的大部分功能。 但是,EF 6中有一些功能在EF Core 2.0中不受支持,例如:
- EDMX/ Graphical Visualization of Model
- Entity Data Model Wizard (for DB-First approach)
- ObjectContext API
- Querying using Entity SQL.
- Automated Migration
- Inheritance: Table per type (TPT)
- Inheritance: Table per concrete class (TPC)
- Many-to-Many without join entity
- Entity Splitting
- Spatial Data
- Lazy loading of related data
- Stored procedure mapping with DbContext for CUD operation
- Seed data
- Automatic migration
EF Core包含EF 6.x不支持的以下新功能:
- 简单的关系配置
- 批量插入、更新、删除操作
- In-memory provider for testing
- 支持IoC(控制反转)
- 唯一约束
- 隐藏属性( Shadow properties )
- 备用键(Alternate keys )
- 全局查询过滤器(Global query filter)
- 字段映射(Field mapping )
- 连接池(DbContext pooling )
- 用于处理断开的实体图的更好模式(Better patterns for handling disconnected entity graphs )
EF Core 数据库提供商(支持ef core的驱动)
Entity Framework Core 使用提供者模型来访问许多不同的数据库。EF Core将提供程序包含为您需要安装的NuGet包。
下表列出了EF Core的数据库提供程序和NuGet程序包。
数据库 | NuGet包 |
---|---|
SQL Server | Microsoft.EntityFrameworkCore.SqlServer |
MySQL的 | MySql.Data.EntityFrameworkCore |
PostgreSQL的 | Npgsql.EntityFrameworkCore.PostgreSQL |
SQLite的 | Microsoft.EntityFrameworkCore.SQLite |
SQL Compact | EntityFrameworkCore.SqlServerCompact40 |
在记忆中 | Microsoft.EntityFrameworkCore.InMemory |
下一章中将学习如何安装EF Core。