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

使用NetTopologySuite时如何强制列映射为SQL Server geometry类型?

EF代码优先模式下将NetTopologySuite的Geometry属性映射为SQL Server的geometry类型

有两种实用方法可以实现将C#中的Geometry属性映射为SQL Server的geometry数据类型,而非默认的geography:

方法1:使用Fluent API配置

在你的DbContext类中重写OnModelCreating方法,针对目标实体的Geometry属性明确指定列类型:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // 替换YourEntity为实际的实体类名称
    modelBuilder.Entity<YourEntity>()
        .Property(e => e.Geometry)
        .HasColumnType("geometry");
}

方法2:使用数据注解

直接在实体的Geometry属性上添加[Column]注解,指定列类型:

using System.ComponentModel.DataAnnotations.Schema;

public class YourEntity
{
    [Column(TypeName = "geometry")]
    public Geometry Geometry { get; set; }
}

后续操作

配置完成后,需要重新生成迁移并更新数据库:

  1. 执行命令生成新迁移:dotnet ef migrations add AdjustGeometryColumnType
  2. 执行命令更新数据库:dotnet ef database update

注意:确保项目已正确引用Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite包,这是NetTopologySuite与EF Core SQL Server集成的必要依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:41:01