作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我将 Entity Framework Core 2.2 与 NetTopologySuite 1.15.1 和 SQL 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
问题 1100支持 SQL Server 和 SQL Lite 上的空间数据类型。
关于c# - 有没有办法用 EntityFrameworkCore 2.2 声明空间索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54436744/
我是一名优秀的程序员,十分优秀!