EF Core 5.0 中的中断性变更Breaking changes in EF Core 5.0

API 和行为的下列更改有可能导致现有应用程序在更新到 EF Core 5.0.0 时中断。

摘要Summary

中断性变更影响
从 SQLite NTS 扩展中删除了 HasGeometricDimension 方法

从 SQLite NTS 扩展中删除了 HasGeometricDimension 方法Removed HasGeometricDimension method from SQLite NTS extension

跟踪问题 #14257

旧行为

HasGeometricDimension 过去用于在几何列上启用其他维度(Z 和 M)。 但是,之前它只影响数据库创建。 不需要指定它来查询具有其他维度的值。 之前,在插入或更新具有其他维度的值时,它也无法正常工作(请参见 see #14257)。

新行为

要能够插入和更新具有其他维度(Z 和 M)的几何值,需要将维度指定为列类型名称的一部分。 这与 SpatiaLite 的 AddGeometryColumn 函数的基本行为匹配度更高。

为什么

在列类型中指定维度后,不需要使用 HasGeometricDimension,该方法也很多余,因此我们已将它彻底删除。

缓解措施

使用 HasColumnType 指定维度:

  1. modelBuilder.Entity<GeoEntity>(
  2. x =>
  3. {
  4. // Allow any GEOMETRY value with optional Z and M values
  5. x.Property(e => e.Geometry).HasColumnType("GEOMETRYZM");
  6. // Allow only POINT values with an optional Z value
  7. x.Property(e => e.Point).HasColumnType("POINTZ");
  8. });