包括控制台,WPF,WinForms,ASP.NET 4 等等
包括目标平台为 Windows,OSX 和 Linux 的 .NET Framework 和 .NET Core 的 ASP.NET Core
基于具有公共标量类型的 get/set 属性的 POCO(简单 C# 对象)实体。
一对多 和 一对零/一 关系在模型中可以基于外键来指定,简单集合或引用类型的导航属性可以使用这些关系来关联。
基于实体类型的外形内置了一些初始模型。
允许你重写数据库上下文中的 OnModelCreating
方法以进一步配置由惯例发现的模型。
特性可以被添加到实体类型/属性上并且将影响 EF 模型(比如,添加 [Required] 将让 EF 知道被标注的属性是必须的)。
允许实体映射到数据表/列
包括客户端生成和数据库生成
允许在数据库插入(默认值)或更新(计算列值)操作时生成值。
允许在模型中定义 Sequences (顺序)对象
允许定义替代键和定义指向该键的关联关系。
在模型中定义索引会自动在数据库中引入索引,包括唯一索引。
允许在模型中定义未在 .NET 类型中声明、存储,但可以被 EF Core 跟踪和更新的属性 。通常用作不想要暴露的外键属性。
允许同一个继承体系中的实体保存到单个表中。通过可识别列来鉴别数据库中给定记录的实体类型。
检测模型中的无效模式,并提供有用的错误消息。
允许通过对比当前状态和原状态的副本(快照)来自动检测实体中的变更。
允许在修改实体属性值时通知变更跟踪器。
通过 DbContext.Entry
和 DbContext.ChangeTracker
访问跟踪状态
新的 DbContext.AttachGraph
API 能够帮助我们将实体重新附加到上下文,如此即可继续保存新的/已更改的实体。
将实体对象的变更持久化到数据库。
一旦从数据库提取数据,则保护它不被其他用户重写变更。
当数据库处理通过 SaveChanges
发布的命令时,释放当前线程以让它可以处理其他请求。
SaveChanges
总是原子性的(要么全部成功,要么全部失败)。还有一些相关的 API 允许在 上下文实例间共享事务。
通过将多个 INSERT/UPDATE/DELETE 命令批量化到与数据库的单程交互中以提供更好的性能。
提供使用 LINQ 从数据库遍历数据的能力
让查询能够包含因不能在数据中库进行评估而必须将数据遍历到内存中之后才能评估的逻辑。
当上下文无需监视实体实例的变更时(比如结果是只读的)可以让查询执行的更快。
提供 Include
和 ThenInclude
方法来识别应该在查询时提取的关联数据。
在数据库处理查询的过程中,释放当前线程(及其关联的资源)以让它可以处理其他请求。
提供 DbSet.FromSql
方法以使用原始SQL查询来提取数据。这些查询还可以在使用 LINQ 时组成。
主要用于测试,当你需要在不使用迁移的情况下快速创建/删除数据库时可以使用这些API。
允许在你的模型变更时推进关系数据库模式。
基于现有的关系数据库模式搭建基于 EF 模型的基架。
链接到 Microsoft SQL Server 2008 或更高版本。
连接到 SQLite 3 数据库。
设计用来在无需连接到真实数据库的情况下方便地进行测试
现在已经有一些其他数据库引擎的提供程序了。可以在 数据库提供程序 中查看完整列表。