gpt4 book ai didi

c# - 有没有办法用 EntityFrameworkCore 2.2 声明空间索引?

转载 作者:太空狗 更新时间:2023-10-29 20:19:12 24 4
gpt4 key购买 nike

我将 Entity Framework Core 2.2NetTopologySuite 1.15.1SQL Server 2016 一起使用。拥有类型为 IPoint 的列非常有用,以至于我想在其上创建索引。

我有这张 table

public class Location
{
public int Id { get; set; }

public IPoint Coordinates { get; set; }

public static void Register(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Location>(entity => entity.HasIndex(x => new {x.Coordinates}));
}
}

EF core 在生成迁移时处理得很好,因此生成了以下代码:

migrationBuilder.CreateIndex(
name: "IX_Locations_Coordinates",
schema: "data",
table: "Locations",
column: "Coordinates");

但是,一旦我尝试将迁移应用到数据库,就会抛出 SqlException 并显示以下消息

SqlException: Column 'Coordinates' in table 'data.Locations' is of a type that is invalid for use as a key column in an index or statistics.

SQL Server 确实支持类型为geography的列的索引。

我相信原因可能是 EF Core 正在尝试创建一个 regular index而不是 spatial one .

是我做错了什么还是它不受支持?有没有办法告诉 EF Core 它应该创建空间索引?

最佳答案

查看 EF Core 的问题日志,似乎尚不支持创建空间索引。

https://github.com/aspnet/EntityFrameworkCore/issues/12538

github

问题 1100支持 SQL Server 和 SQL Lite 上的空间数据类型。

关于c# - 有没有办法用 EntityFrameworkCore 2.2 声明空间索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54436744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com