我有一个 EF Core
DbContext
,它曾经将 EF Core 6 与 NetTopologySuite 结合使用。
我使用它来编辑由我无法控制的不同 C# .NET 应用程序使用的数据库。
当我插入该版本的几何图形时,它们与该应用程序兼容。
现在我已将 EF Core 更新到版本 8(以及 NetTopologySuite),但现在我的代码创建的几何图形有些不同,但我在 NetTopologySuite 中找不到任何更改的文档。
这就是 SSMS 中的差异:
“旧”-几何二进制:
0x00000000010D00000000806DD4C000000000605D14410000000000308140
POINT (-20918 333656)
“新”-几何二进制:
0x00000000010F00000000806DD4C000000000605D14410000000000308140000000000000F8FF
POINT (-20918 333656)
这 2 个几何图形代表相同的 WKT,但不知何故具有完全不同的二进制。
我的目标是用我的代码创建“旧式”二进制文件,但我不知道要更改什么。
我现在发现了差异:“新”二进制文件末尾有一个 M 值。
解决方案是给我的
NetTopologySuite.NtsGeometryServices.Instance
一个DotSpatialAffineCoordinateSequenceFactory
,并以Ordinates.XYZ
作为参数。
然后没有 M 值被写入二进制表示中,另一个程序就满意了。