EF Core 2.2空间类型不能添加到数据库迁移

EF Core 2.2 spatial type can#39;t be added to db migration(EF Core 2.2空间类型不能添加到数据库迁移)
本文介绍了EF Core 2.2空间类型不能添加到数据库迁移的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用EF core 2.2构建一个具有空间对象的数据库,但在尝试创建数据库迁移时遇到了问题。使用https://docs.microsoft.com/en-us/ef/core/modeling/spatial,特别是:

class Country
{
    public int CountryID { get; set; }

    public string CountryName { get; set; }

    // Database includes both Polygon and MultiPolygon values
    public IGeometry Border { get; set; }
}

如果我尝试使用此命令创建迁移,则会收到以下错误:

属性‘Country.Borde’属于接口类型(‘IGeometry’)。 如果它是导航属性,则手动配置 通过将此属性强制转换为映射的实体类型,否则忽略 使用NotMappdAttribute的属性或 "OnModelCreating"中的"EntityTypeBuilder.Ignore"。

同样,如果我将其更改为几何图形类型,则会得到:

无法映射属性‘Geometry.UserData’,因为它是 不是受支持的基元类型或不是有效的 实体类型。显式映射此属性,或使用 "[NotMaps]"属性,或使用中的"EntityTypeBuilder.Ignore" "OnModelCreating"。

我不知道我的对象是点、直线还是多边形,所以它必须是泛型的。我如何在我的结构中表现这一点?此外,我还看到一些地方说我需要添加以下代码:

public class MyDBContextFactory : IDesignTimeDbContextFactory<MyDBContext>
    {

        public MyDBContext CreateDbContext(string[] args)
        {
            var builder = new DbContextOptionsBuilder<MyDBContext>();
            builder.UseSqlServer(cnnString, x => x.UseNetTopologySuite());
            return new MyDBContext(builder.Options);
        }
   }

但我收到错误:

‘SqlServerDbContextOptionsBuilder’不包含 "UseNetTopologySuite",没有可访问的扩展方法 "UseNetTopologySuite"接受类型为 找不到"SqlServerDbContextOptionsBuilder"(是否缺少 使用指令还是程序集引用?)

即使我安装了Nuget包

推荐答案

  1. 在您正在使用的数据库上安装相关的NetTopologySuite包depends,例如您使用的是SQLServer,因此需要安装此NuGet包:

Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite 2)配置您的数据库使用NetTopologySuite(需要编辑的代码通常在StartUp.ConfigureServices()中)。只需在options.UseSqlServer括号内添加, x => x.UseNetTopologySuite()

如下所示:

services.AddDbContext<ManagerContext>(options =>
    options.UseSqlServer(
        Configuration.GetConnectionString("DefaultConnection"),
        x => x.UseNetTopologySuite()
    )
);

我不必向文件添加using,因为我已经引用了,仅供参考,如果您需要,它将是Microsoft.EntityFrameworkCore

如果您在安装NuGet程序包后仍收到引用错误,请转到管理NuGet程序包并检查它是否在已安装列表中,如果它在已安装列表中,则重新生成您的解决方案并重新启动Visual Studio。这可能会有所帮助。

这篇关于EF Core 2.2空间类型不能添加到数据库迁移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)