比较 EF Core 和 EF6

比较 EF Core 和 EF6

  • 2019/01/23
  • EF Core

    Entity Framework Core (EF Core) 是适用于 .NET 的新式对象数据库映射器。 它支持 LINQ 查询、更改跟踪、更新和架构迁移。

    EF Core 通过数据库提供程序插件模型与 SQL Server/SQL Azure、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和更多数据库配合使用。

    EF6

    Entity Framework 6 (EF6) 是专为 .NET Framework 设计的对象关系映射器,但支持 .NET Core。 EF6 是一款受支持的稳定产品,但我们不再对其进行积极开发。

    功能比较

    EF Core 提供了不会在 EF6 中实现的新功能。 但是,并非所有 EF6 功能都已在 EF Core 中实现。

    下表比较了 EF Core 和 EF6 中可用的功能。 这只是大致比较,没有列出全部功能,也未解释不同 EF 版本中相同功能之间的差异。

    EF Core 列指出了功能首次出现的产品版本。

    创建模型

    表 1
    功能 EF6.4 EF Core
    基本类映射 1.0
    带有参数的构造函数   2.1
    属性值转换   2.1
    没有键的映射类型   2.1
    约定 1.0
    自定义约定 1.0(部分;#214
    数据注释 1.0
    Fluent API 1.0
    继承:每个层次结构一个表 (TPH) 1.0
    继承:每个类型一个表 (TPT) 计划在 5.0 版中推出 (#2266)
    继承:每个具体类一个表 (TPC) 5.0 版的延伸目标 (#3170) (1)
    阴影状态属性   1.0
    备用键   1.0
    多对多导航 计划在 5.0 版中推出 (#19003)
    多对多,无联接实体 积压工作 (#1368)
    密钥生成:数据库 1.0
    密钥生成:客户端   1.0
    复杂/已拥有类型 2.0
    空间数据 2.2
    模型格式:代码 1.0
    从数据库更新模型:命令行 1.0
    从数据库更新模型 部分 积压工作 (#831)
    全局查询筛选器   2.0
    表拆分 2.0
    实体拆分 5.0 版的延伸目标 (#620) (1)
    数据库标量函数映射 2.0
    字段映射   1.1
    可为空引用类型 (C# 8.0)   3.0
    模型的图形可视化效果 未计划支持 (2)
    图形模型编辑器 未计划支持 (2)
    模型格式:EDMX (XML) 未计划支持 (2)
    从数据库更新模型:VS 向导 未计划支持 (2)

    查询数据

    表 2
    功能 EF6.4 EF Core
    LINQ 查询 1.0
    可读内容生成的 SQL 1.0
    GroupBy 转换 2.1
    加载关联数据:预先 1.0
    加载关联数据:预先加载派生类型   2.1
    加载关联数据:延迟 2.1
    加载关联数据:Explicit 1.1
    原生 SQL 查询:实体类型 1.0
    原生 SQL 查询:无键实体类型 2.1
    原生 SQL 查询:使用 LINQ 编写   1.0
    显式编译的查询 2.0
    await foreach (C# 8.0)   3.0
    基于文本的查询语言(实体 SQL) 未计划支持 (2)

    保存数据

    表 3
    功能 EF6.4 EF Core
    更改跟踪:快照 1.0
    更改跟踪:通知 1.0
    更改跟踪:代理 已在 5.0 版中合并 (#10949)
    访问跟踪的状态 1.0
    开放式并发 1.0
    事务 1.0
    批处理语句   1.0
    存储过程映射 积压工作 (#245)
    断开连接低级别 API 图形 1.0
    断开连接端到端图形   1.0(部分;#5536

    其他功能

    表 4
    功能 EF6.4 EF Core
    迁移 1.0
    数据库创建/删除 API 1.0
    种子数据 2.1
    连接复原 1.1
    拦截器 3.0
    事件 3.0(部分;#626
    简单的日志记录 (Database.Log) 已在 5.0 版中合并 (#1199)
    DbContext 池   2.0

    数据库提供程序(3)

    表 5
    功能 EF6.4 EF Core
    SQL Server 1.0
    MySQL 1.0
    postgresql 1.0
    Oracle 1.0
    SQLite 1.0
    SQL Server Compact 1.0 (4)
    DB2 1.0
    Firebird 2.0
    Jet (Microsoft Access)   2.0 (4)
    Azure Cosmos DB   3.0
    内存中(用于测试)   1.0

    1 在给定版本中,不太可能实现延伸目标。 但如果一切顺利,我们将尝试加入相关功能。

    2 EF Core 中不会实现某些 EF6 功能。 这些功能依赖于 EF6 的基础实体数据模型 (EDM),并且/或者是复杂功能,投资回报率相对较低。 欢迎提出反馈,但是,尽管 EF Core 支持许多在 EF6 中无法实现的功能,反过来,EF Core 支持 EF6 的所有功能却并不可行。

    3 更新到新的 EF Core 主版本时,第三方实现的 EF Core 数据库提供程序可能延迟。 有关详细信息,请参阅数据库提供程序

    4 SQL Server Compact 和 Jet 提供程序仅适用于 .NET Framework(而不适用于 .NET Core)。

    受支持的平台

    EF Core 3.1 通过使用 .NET Standard 2.0 在 .NET Core 和 .NET Framework 上运行。 但 EF Core 5.0 不会在 .NET Framework 上运行。 有关更多详细信息,请参阅平台

    扫描二维码关注公众号,回复: 10330111 查看本文章

    EF6.4 通过多目标在 .NET Core 和 .NET Framework 上运行。

    针对新应用程序的选择指南

    除非应用需要仅在 .NET Framework 上受支持的内容,否则对于所有新应用程序都在 .NET Core 上使用 EF Core。

    针对现有 EF6 应用程序的选择指南

    EF Core 不是 EF6 的直接替换项。 从 EF6 迁移到 EF Core 可能需要更改应用程序。

    将 EF6 应用迁移到 .NET Core 时:

    • 如果数据访问代码稳定且不太可能开发或需要新功能,请继续使用 EF6。
    • 如果数据访问代码不断演变,或应用需要仅在 EF Core 中提供的新功能,请迁移到 EF Core。
    • 迁移到 EF Core 通常也是为了提高性能。 但是,并非所有方案都可提高性能,因此请先进行分析。

    有关详细信息,请参阅从 EF6 到 EF Core 的迁移

反馈

发布了17 篇原创文章 · 获赞 225 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/cxu123321/article/details/105209779
EF6