EF Core 1.0 包含的功能

平台

.NET Framework 4.5.1

包括控制台,WPF,WinForms,ASP.NET 4 等等

.NET Standard 1.3

包括目标平台为 Windows,OSX 和 Linux 的 .NET Framework 和 .NET Core 的 ASP.NET Core

建模

基础建模

基于具有公共标量类型的 get/set 属性的 POCO(简单 C# 对象)实体。

关系和导航属性

一对多 和 一对零/一 关系在模型中可以基于外键来指定,简单集合或引用类型的导航属性可以使用这些关系来关联。

内置惯例

基于实体类型的外形内置了一些初始模型。

流式 API

允许你重写数据库上下文中的 OnModelCreating 方法以进一步配置由惯例发现的模型。

数据注解

特性可以被添加到实体类型/属性上并且将影响 EF 模型(比如,添加 [Required] 将让 EF 知道被标注的属性是必须的)。

关系表映射

允许实体映射到数据表/列

生成主键值

包括客户端生成和数据库生成

数据库生成值

允许在数据库插入(默认值)或更新(计算列值)操作时生成值。

SQL Server 中的 Sequences

允许在模型中定义 Sequences (顺序)对象

唯一约束

允许定义替代键和定义指向该键的关联关系。

索引

在模型中定义索引会自动在数据库中引入索引,包括唯一索引。

影子状态属性

允许在模型中定义未在 .NET 类型中声明、存储,但可以被 EF Core 跟踪和更新的属性 。通常用作不想要暴露的外键属性。

每张表对应一个继承体系模式

允许同一个继承体系中的实体保存到单个表中。通过可识别列来鉴别数据库中给定记录的实体类型。

模型验证

检测模型中的无效模式,并提供有用的错误消息。

变更跟踪

快照变更跟踪

允许通过对比当前状态和原状态的副本(快照)来自动检测实体中的变更。

通知变更跟踪

允许在修改实体属性值时通知变更跟踪器。

访问跟踪状态

通过 DbContext.EntryDbContext.ChangeTracker 访问跟踪状态

重新附加已分离的实体/实体对象图

新的 DbContext.AttachGraph API 能够帮助我们将实体重新附加到上下文,如此即可继续保存新的/已更改的实体。

保存数据

基础保存功能

将实体对象的变更持久化到数据库。

乐观并行

一旦从数据库提取数据,则保护它不被其他用户重写变更。

异步保存变更

当数据库处理通过 SaveChanges 发布的命令时,释放当前线程以让它可以处理其他请求。

数据库事务

SaveChanges 总是原子性的(要么全部成功,要么全部失败)。还有一些相关的 API 允许在 上下文实例间共享事务。

关系:批处理

通过将多个 INSERT/UPDATE/DELETE 命令批量化到与数据库的单程交互中以提供更好的性能。

查询

基础 LINQ 支持

提供使用 LINQ 从数据库遍历数据的能力

混合客户端/服务端评估

让查询能够包含因不能在数据中库进行评估而必须将数据遍历到内存中之后才能评估的逻辑。

无跟踪

当上下文无需监视实体实例的变更时(比如结果是只读的)可以让查询执行的更快。

贪婪加载

提供 IncludeThenInclude 方法来识别应该在查询时提取的关联数据。

异步查询

在数据库处理查询的过程中,释放当前线程(及其关联的资源)以让它可以处理其他请求。

原始 SQL 查询

提供 DbSet.FromSql 方法以使用原始SQL查询来提取数据。这些查询还可以在使用 LINQ 时组成。

数据库模式管理

数据库创建/删除API

主要用于测试,当你需要在不使用迁移的情况下快速创建/删除数据库时可以使用这些API。

关系数据库迁移

允许在你的模型变更时推进关系数据库模式。

数据库反向工程

基于现有的关系数据库模式搭建基于 EF 模型的基架。

数据库提供程序

SQL Server

链接到 Microsoft SQL Server 2008 或更高版本。

SQLite

连接到 SQLite 3 数据库。

内存

设计用来在无需连接到真实数据库的情况下方便地进行测试

第三方提供程序

现在已经有一些其他数据库引擎的提供程序了。可以在 数据库提供程序 中查看完整列表。