Entity Framework Core 8 预览版 2 已发布

Entity Framework Core 8 Preview 2 发布总结

发布时间与主要特性

Entity Framework Core 8 Preview 2 于2023年3月14日发布。该版本最显著的特性是增加了对 SQL Server 分层数据(Hierarchical Data) 的支持。

分层数据支持

分层数据支持在 EF Core 8 Preview 2 中通过官方包 Microsoft.EntityFrameworkCore.SqlServer.HierarchyId 实现。此前,社区包 EntityFrameworkCore.SqlServer.HierarchyId 已提供了类似功能,但此次更新将其纳入官方支持。

配置与使用

要启用 HierarchyId 功能,开发者需要安装上述官方包,并在应用程序启动代码中配置如下:

options.UseSqlServer(
    connectionString,
    x => x.UseHierarchyId());

配置完成后,HierarchyId 可用于表示分层数据结构,如组织架构、文件夹结构或网站页面树结构。

实体类型中的使用

在实体类型中,HierarchyId 可以像其他属性类型一样使用:

public HierarchyId NodePath { get; set; }

分层路径表示

HierarchyId 表示实体在树结构中的路径。例如,路径 /1/2/3 表示:

  • / 为树的根节点,
  • 1 为祖父节点,
  • 2 为父节点,
  • 3 为节点本身的标识符。

路径 /1/2/4/1/2/5 是初始示例节点的兄弟节点,而 /1/3/1/4 是父节点的兄弟节点。节点之间还可以通过使用小数插入新节点,例如 /1/3.5 位于 /1/3/1/4 之间。

SQL Server 中的存储

尽管代码中的路径是易读的,SQL Server 内部使用紧凑的二进制格式(varbinary)存储 hierarchyId

限制

在 SQL Server 中,hierarchyId 类型有以下限制:

  • 它本身并不表示树结构,应用程序需负责分配 hierarchyId 值以表示树结构。
  • 不能保证 hierarchyId 的唯一性,应用程序需确保适当的并发控制。
  • 没有外键约束,例如删除父节点时,应用程序需更新其所有子节点的 hierarchyId

其他特性

EF Core 7 引入了对 SQL Server 的 JSON 列支持,EF Core 8 Preview 2 进一步扩展了这一特性,使其支持 SQLite 数据库。

兼容性与发布计划

EF8 预览版目前支持 .NET 6 LTS 和 .NET 7。EF8 的正式版本将与 .NET 8 LTS 版本同步发布,预计于2023年11月推出。

阅读 26
0 条评论