EF Core 1.0 中包含的功能Features included in EF Core 1.0

平台Platforms

.NET Framework 4.5.1.NET Framework 4.5.1

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

.NET Standard 1.3.NET Standard 1.3

包括面向 Windows、OSX 和 Linux 上的 .NET Framework 和 .NET Core 的 ASP.NET Core。

建模Modelling

基本建模Basic modelling

基于具有常用标量类型(intstring 等)的 get/set 属性的 POCO 实体。

关系和导航属性Relationships and navigation properties

可以在模型中根据外键指定一对多和一对零或一对一关系。 简单集合或引用类型的导航属性可以与这些关系相关联。

内置约定Built-in conventions

这些约定基于实体类的形状构建初始模型。

Fluent APIFluent API

允许覆盖上下文中的 OnModelCreating 方法,以进一步配置按约定发现的模型。

数据注释Data annotations

可添加到实体类/属性并影响 EF 模型的属性。 例如,[Required] 将告知 EF 某个属性是必需的。

关系表映射Relational Table mapping

允许实体映射到表/列。

键值生成Key value generation

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

数据库生成的值Database generated values

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

SQL Server 中的序列Sequences in SQL Server

允许在模型中定义序列对象。

唯一约束Unique constraints

允许定义备用键以及面向该键的关系的功能。

索引Indexes

在模型中定义索引会自动在数据库中引入索引。 此外,还支持唯一索引。

阴影状态属性Shadow state properties

允许在未在 .NET 类中声明和存储的模型中定义属性,但可以由 EF Core 进行跟踪和更新。 不需要在对象中公开这些属性时,通常用于外键属性。

“每个层次结构一张表”继承模式Table-Per-Hierarchy inheritance pattern

允许将继承层次结构中的实体使用鉴别器列保存到单个表中,以在数据库中针对给定记录标识实体类型。

模型验证Model validation

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

更改跟踪Change tracking

快照更改跟踪Snapshot change tracking

通过将当前状态与原始状态的副本(快照)进行比较,可以自动检测实体中的更改。

通知更改追踪Notification change tracking

修改属性值后,允许实体通知更改跟踪器。

访问跟踪的状态Accessing tracked state

通过 DbContext.EntryDbContext.ChangeTracker

附加分离的实体/图Attaching detached entities/graphs

新的 DbContext.AttachGraph API 有助于将实体重新附加到上下文,以保存新的/修改的实体。

保存数据Saving data

基本保存功能Basic save functionality

允许将对实体实例的更改持久保存到数据库。

乐观并发Optimistic Concurrency

防止由于从数据库中提取数据而覆盖其他用户所做的更改。

异步 SaveChangesAsync SaveChanges

在数据库处理从 SaveChanges 发出的命令时,可以释放当前线程以处理其他请求。

数据库事务Database Transactions

表示 SaveChanges 始终是原子(意味着它或者完全成功,或者不对数据库进行更改)。 还存在事务相关的 API,允许在上下文实例之间共享事务等。

关系:批处理语句Relational: Batching of statements

通过将多个 INSERT/UPDATE/DELETE 命令批量放到数据库的单个往返路线中来提供更好的性能。

查询Query

基本 LINQ 支持Basic LINQ support

提供使用 LINQ 从数据库检索数据的功能。

混合客户端/服务器评估Mixed client/server evaluation

使查询能够包含无法在数据库中评估的逻辑,因此,必须在将数据检索到内存后进行评估。

NoTrackingNoTracking

如果上下文无需监视实体实例的变化,可加快查询执行速度(在结果只读的情况下非常有用)。

预先加载Eager loading

提供 IncludeThenInclude 方法来标识在查询时也应提取的相关数据。

异步查询Async query

当数据库处理查询时,可以释放当前线程(及其相关资源)以处理其他请求。

原始 SQL 查询Raw SQL queries

提供 DbSet.FromSql 方法以使用原始 SQL 查询提取数据。 也可以使用 LINQ 编写这些查询。

数据库架构管理Database schema management

数据库创建/删除 APIDatabase creation/deletion APIs

多数旨在测试你希望在不使用迁移的情况下快速创建/删除数据库的位置。

关系数据库迁移Relational database migrations

允许关系数据库架构随模型更改而演进。

从数据库反向工程Reverse engineer from database

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

数据库提供程序Database providers

SQL ServerSQL Server

连接到 Microsoft SQL Server 2008 及以上版本。

SQLiteSQLite

连接到 SQLite 3 数据库。

内存中In-Memory

旨在实现无需连接到真实的数据库即可轻松启用测试。

第三方提供程序3rd party providers

多个提供程序可用于其他数据库引擎。 有关完整的列表,请参阅数据库提供程序