簡體   English   中英

EF Core 3.1 無法映射屬性“Geometry.UserData”

[英]EF Core 3.1 The property 'Geometry.UserData' could not be mapped

我有一個數據庫優先的 .net 核心 3.1 web 應用程序,它連接到帶有geography列的 SQL 服務器數據庫表。 數據庫腳手架和應用程序構建完成時沒有任何問題,但是當我運行應用程序時出現錯誤。 如果我添加[NotMapped]屬性,錯誤消失但顯然該屬性未映射。 可能是什么問題?

無法映射屬性“Geometry.UserData”,因為它的類型“object”不是受支持的原始類型或有效的實體類型。 顯式 map 此屬性,或使用“[NotMapped]”屬性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略它。

我已經安裝了這些包

  • Microsoft.EntityFrameworkCore.SqlServer v3.1.8
  • NetTopologySuite.Core v1.15.3

腳手架 class 看起來像這樣

public class MyClass
{  
    public int Id { get; set; }  
    public string Name { get; set; }  
    public NetTopologySuite.Geometries.Geometry Location { get; set; }  
}  

我找到了一個綜合了幾件事的答案。 首先,在安裝必要的拓撲包后,重新運行數據庫 ef 腳手架。 然后,在 Startup.cs 中添加.UseSqlServer(ConnectionString, x=> x.UseNetTopologySuite(); 。請記住,生成的 Datacontext 也包含相同的行,但它沒有被執行,因為它是寫在if語句中的。

將 NetTopologySuite 5 更新為 6 后,它對我有用

程序.cs

builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"), sqlOption =>
            sqlOption.UseNetTopologySuite()
         ));




 <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.4" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="6.0.4" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.4">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM