我正在尝试在Entity Framework Core 2.2中进行迁移,但遇到了一些奇怪的错误。should work是因为文档中没有提到任何有关映射代码的内容。
此命令:
dotnet ef迁移添加InitialCreate
导致此错误:
属性“ Point.Boundary”具有接口类型(“ IGeometry”)。如果它是导航属性,则通过将其强制转换为映射的实体类型来手动配置此属性的关系,否则,请使用“ OnModelCreating”中的NotMappedAttribute或“ EntityTypeBuilder.Ignore”忽略该属性。
我不明白。我有一个实体,一个上下文和所有必需的依赖项,包括EF Core 2.2。我该如何解决?
项目文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.0" />
<PackageReference Include="NetTopologySuite" Version="1.15.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.0.2105168" />
</ItemGroup>
模型文件
using System.ComponentModel.DataAnnotations;
using NetTopologySuite.Geometries;
namespace WebApplication1.Models
{
public class Item
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public Point Location { get; set; }
}
}
上下文文件
using System;
using Microsoft.EntityFrameworkCore;
using WebApplication1.Models;
namespace WebApplication1
{
public class ItemContext : DbContext
{
public ItemContext(DbContextOptions<ItemContext> options) : base(options)
{
Console.WriteLine("Context created");
}
public DbSet<Item> Items { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
Console.WriteLine("OnModelCreating");
}
}
}
答案 0 :(得分:2)
基本上,您共享的链接是仅介绍新功能的博客。在每个主题的结尾,您将找到一个LBYL。似乎该套件需要一个额外的库,具体取决于您所使用的数据库。
根据本文档,您需要根据您的数据库添加相应的 Spatial NuGet软件包。 (请检查 install 部分。例如,如果您使用的是SQL Server,请添加Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
软件包。完成后,请在启动类的AddDbContext
函数中,您可以使用类似config.UseSqlServer("", x => x.UseNetTopologySuite())
的东西。