使用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; } }
后续操作
配置完成后,需要重新生成迁移并更新数据库:
- 执行命令生成新迁移:
dotnet ef migrations add AdjustGeometryColumnType - 执行命令更新数据库:
dotnet ef database update
注意:确保项目已正确引用Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite包,这是NetTopologySuite与EF Core SQL Server集成的必要依赖。
内容的提问来源于stack exchange,提问作者Inx51
相关产品推荐
相关产品推荐

