EF Core 2.2 spatial type can#39;t be added to db migration(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包
推荐答案
- 在您正在使用的数据库上安装相关的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空间类型不能添加到数据库迁移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:EF Core 2.2空间类型不能添加到数据库迁移


- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 输入按键事件处理程序 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01