You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装.NET 9后使用NetTopologySuite遇类型转换异常求助

解决NetTopologySuite在.NET9环境下的类型映射错误

问题根源

你遇到的错误是因为public.geometry是PostGIS提供的空间几何类型,并非PostgreSQL的普通复合类型,而MapComposite<Geometry>是用于映射自定义复合类型的方法,完全不适用这里。另外,安装.NET9后,环境中的Npgsql版本可能自动适配了.NET9,导致和你的.NET8应用出现兼容性冲突。

解决方案

1. 替换错误的映射代码

删除builder.MapComposite<Geometry>("public.geometry");,改用PostGIS专用的映射方法:

var builder = new NpgsqlDataSourceBuilder(connectionString);
builder.UseNetTopologySuite(); // 启用PostGIS几何类型映射
var dataSource = builder.Build();

2. 锁定兼容的NuGet包版本

确保项目引用的Npgsql和NetTopologySuite.Npgsql版本适配.NET8:

  • Npgsql:使用8.x系列版本(如8.0.3)
  • NetTopologySuite.Npgsql:使用与Npgsql版本匹配的版本(如8.0.3)

可以在项目文件中明确指定版本:

<PackageReference Include="Npgsql" Version="8.0.3" />
<PackageReference Include="NetTopologySuite.Npgsql" Version="8.0.3" />

3. 强制使用.NET8运行时

如果系统中同时安装了.NET9,在项目文件中明确指定目标框架和运行时版本,避免应用意外使用.NET9:

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
  <RuntimeFrameworkVersion>8.0.10</RuntimeFrameworkVersion> <!-- 替换为你使用的.NET8具体版本 -->
</PropertyGroup>

内容的提问来源于stack exchange,提问作者Alexander Kolomiets

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:42:02