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月推出。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。