Я пытаюсь построить базу данных с пространственным объектом, используя 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.Border'имеет тип интерфейса («IGeometry»).Если это свойство навигации, вручную настройте отношение для этого свойства, приведя его к сопоставленному типу сущности, в противном случае игнорируйте свойство, используя NotMappedAttribute или 'EntityTypeBuilder.Ignore' в 'OnModelCreating'.
аналогичноесли вместо этого изменить его на тип Geometry, я получу:
Свойство 'Geometry.UserData' не может быть отображено, поскольку оно имеет тип 'object', который не поддерживается примитивным типом илидопустимый тип объекта.Либо явным образом сопоставьте это свойство, либо проигнорируйте его, используя атрибут «[NotMapped]» или «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 »(вы пропустили директиву using или ссылку на сборку?)
, хотя у меня есть nugetпакет установлен