【发布时间】:2021-07-23 23:15:03
【问题描述】:
我有一个使用 dotnet ef dbcontext 脚手架生成的实体:
public partial class Company
{
public DbGeography Location { get; set; }
}
数据库中的类型是地理。 DbGeography 来自 System.Data.Entity.Spatial 命名空间。
当我运行程序时,我收到以下错误:
实体类型“DbGeography”需要定义一个主键。如果 您打算使用无密钥实体类型,请在 'OnModelCreating'。
所以我在上下文中添加:
modelBuilder.Entity<DbGeography>(builder =>
{
builder.HasNoKey();
});
出现以下错误:
无法确定导航所代表的关系 'DbGeography' 类型的'Company.Location'。要么手动配置 关系,或使用 '[NotMapped]' 忽略此属性 属性或在“OnModelCreating”中使用“EntityTypeBuilder.Ignore”。
在上下文中忽略它不是一种选择,因为我需要这个字段。无论如何,它会导致另一个错误。 ('DbGeographyWellKnownValue' 需要定义一个主键。)
我也不认为我需要添加关系,因为 DbGeography 不是另一个实体。
我该如何从这里开始?
我已经完成了这个“解决方案”,没有任何区别:https://stackoverflow.com/a/53693654/7523633
【问题讨论】:
-
据sd.blackball.lv/library/…:“DbGeometry 和 DbGeography 类,从 5.0 版本开始就被经典 Entity Framework 支持,目前还不能在 Entity Framework Core 中使用。到目前为止,还没有映射用于 SQL Server 几何和地理列类型。”这是真的吗?
-
EF Core 不支持 DbGeo
-
@ErikEJ,EF Core 团队有什么解决方法,还是不要尝试?
-
EF Core 和 SQL Server 支持 Spatial,是的。
标签: c# entity-framework-core .net-5