今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简称 EF Core),是 EF6 之后微软推出的开源的轻量级可扩展跨平台 ORM 框架。 EF Core 需要和 .NET Core 应用程序一起使用,并且需要 .NET 4.5 版本。下面列举一下 EF Core 所支持的项目类型:
- 运行在 .NET Core 平台上的 Asp.Net Core MVC/Web Api、Console、etc ;
- 运行在 .NET 4.5 版本上的 ASP.NET MVC/Web Api 、WinForm、Console、WinForm、WPF ;
- UWP 平台相关的应用 ;
- 安卓、IOS、Windows 移动平台上运行的应用。
零、EF Core 开发方法
EF Core 只支持两种开发方式 Code First 和 Database First,在 EF Core 2.0 开始不支持数据库模型的可视化设计器以及数据库设计导航。在 Code First 方法中, EF Core API 使用基于 domain classes 中提供的约定和配置的迁移来创建数据库和表,这种方法在 DDD 中很有用。如果你习惯于 Database First ,那么你可以使用 EF Core 命令基于现有的数据库创建 domain classes 和上下文类,但是这种方法支持有限,因为 EF Core 2 版本 不再支持可视化设计器和设计导航。
一、EF Core 与 EF6
这里列一下 EF Core 目前所具有的 EF6 的功能
- DbContext ;
- DbSet ;
- Data Model ;
- 使用Linq-to-Entities查询 ;
- 变更跟踪 ;
- 保存更改 ;
- 迁移 。
以下是 EF Core 目前所不具有的 EF6 的功能
- EDMX /模型的图形可视化 ;
- 实体数据模型向导 ;
- ObjectContext API ;
- 使用Entity SQL查询 ;
- 自动迁移 ;
- TPT ;
- TPC ;
- 多对多关系 ;
- Entity Splitting ;
- Spatial Data ;
- 延迟加载 ;
- 使用DbContext进行存储过程映射以进行CUD操作 ;
- 种子数据 ;
- 自动迁移 。
EF Core 具有如下新功能
- 简单的关系配置
- 批量INSERT,UPDATE和DELETE操作
- 用于测试的内存提供程序
- 支持IoC(控制反转)
- 独特的约束
- 阴影属性
- Alternate keys
- 全局查询过滤器
- Field mapping
- DbContext池
- 用于处理断开的实体图的更好模式