目录

  • 1.EFCore是什么
  • 2.EFCore的特点
  • 3.EFCore和EF6.0的比较
  • 4.EF核心数据库提供商


1.EFCore是什么

  • Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework数据访问技术。 简单来说EFCore是一种ORM的技术。
  • 熟悉EF开发模式的大都知道,EF主要有三种模式进行开发:DataFirst、CodeFirst、ModelFirst。
  • 而EFCore主要支持两种开发方法: 1、CodeFirst(代码优先)2、DataFirst(数据库优先)。EFCore主要针对代码优先方法,很少提供对数据库优先方法的支持,因为从EF Core 2.0开始不支持可视化的DB模型设计器或向导

2.EFCore的特点

  1. 支持多种数据库 MSSQL ,MySQL,SQLite,InMemory
  2. 支持linq查询
  3. 支持反向工程,可以将数据库的架构和EFCore模型进行同步
  4. 支持迁移,EFCore模型的更改可以通过迁移到同步到数据库架构中
  5. 支持日志记录、事件和诊断
  6. 支持使用原生的sql语句进行数据操作,类似半自动ORM

3.EFCore和EF6.0的比较

Entity Framework Core是用于.NET Core应用程序的Entity Framework的新版本和改进版本。EF
Core是新的,因此仍不如EF 6成熟。

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

  • DbContext和DbSet 资料模型
  • 使用Linq-to-Entities查询
  • 变更追踪
  • 保存更改
  • 移居

EF Core将逐步包括EF 6的大多数功能。但是,EF Core 2.0中不支持EF 6的某些功能,例如:

  • EDMX /模型的图形可视化
  • 实体数据模型向导(用于数据库优先方法)
  • ObjectContext API 使用实体SQL查询。
  • 自动迁移
  • 继承:每种类型的表格(TPT)
  • 继承:每个具体类的表(TPC)
  • 不加入实体的多对多 实体分割
  • 空间数据
  • 延迟加载相关数据
  • 使用DbContext进行存储过程映射以进行CUD操作
  • 种子数据
  • 自动迁移

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

  • 轻松的关系配置
  • 批处理INSERT,UPDATE和DELETE操作
  • 内存提供者进行测试
  • 支持IoC(控制反转)
  • 独特的约束
  • 阴影属性
  • 备用键
  • 全局查询过滤器
  • 场图
  • dbContext池
  • 处理断开实体图的更好模式。

4.EF核心数据库提供商

实体框架核心使用提供程序模型来访问许多不同的数据库。EF Core将提供程序包括为您需要安装的NuGet软件包。

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

数据库

Nuget程序包

SQL Server

Microsoft.EntityFrameworkCore.SqlServer

MySQL

MySql.Data.EntityFrameworkCore(官方版,不建议使用)

MySQL

Pomelo.EntityFrameworkCore(第三方提供,Bug少建议使用)

PostgreSQL

Npgsql.EntityFrameworkCore.PostgreSQL

SQLite

Microsoft.EntityFrameworkCore.SQLite

SQL Compact

Microsoft.EntityFrameworkCore.SQLite

In-memory

Microsoft.EntityFrameworkCore.InMemory

Note:

1、SQL Compact 是小型压缩型嵌入式数据库
2、In-memory,内存数据库