我有一个名为cities
的postgis表public class City{
public int Id { get; set; }
public string Name { get; set; }
public PostgisMultiPolygon Geometry { get; set; }
}
我想使用Entity Framework来获取数据。我创建了这样的实体类型配置。
public class MyConvention : EntityTypeConfiguration<City>
{
public MyConvention()
{
ToTable("cities", "public");
Property(p => p.Id).HasColumnName("gid");
Property(p => p.Name).HasColumnName("name");
Property(p => p.Geometry).HasColumnName("geom");
}
}
但是Geometry属性会抛出错误。
类型&#39; NpgsqlTypes.PostgisMultiPolygon&#39;必须是不可空的 值类型,以便将其用作参数&#39; T&#39;在通用类型或 方法 &#39; System.Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration.Property(System.Linq.Expressions.Expression&GT;)&#39;
如果我删除约定,并将属性名称设置为与数据库列名称相同。
public class City{
public int Id { get; set; }
public string Name { get; set; }
public PostgisMultiPolygon geom { get; set; }
}
引发了其他错误:
(6,10):错误3004:从行开始映射片段时出现问题 6:没有为Set Cities中的属性City.geom指定映射。一个 具有密钥(PK)的实体在以下情况下不会往返:实体是类型 [PostgisEntityFramework.City]