目录
- 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的特点
- 支持多种数据库 MSSQL ,MySQL,SQLite,InMemory
- 支持linq查询
- 支持反向工程,可以将数据库的架构和EFCore模型进行同步
- 支持迁移,EFCore模型的更改可以通过迁移到同步到数据库架构中
- 支持日志记录、事件和诊断
- 支持使用原生的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,内存数据库