Мне нужно было использовать типы пространственной географии SQL Server, поэтому добавлено nettopologysuite Пакет Nuget и изменил код в программе.
Код: Выделить всё
builder.Services.AddDbContext(options => {
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"),
x => x.UseNetTopologySuite());
options.EnableSensitiveDataLogging();
options.EnableDetailedErrors();
}, ServiceLifetime.Transient);
< /code>
Я тогда смог добавить свойство в одну из моих моделей следующим образом ... < /p>
public Point Coordinates { get; set; }
< /code>
.... и воспользуйтесь функциями географии. Все работает нормально. < /P>
При разработке я обычно запрошу свою базу данных через LinqPad, используя ядро EF (поскольку это дает мне правильные имена свойств навигации, а также методы расширения и т. Д. ) Однако, поскольку я добавляю географический материал, когда я пытаюсь запросить базу данных из LinqPad, я получаю ошибку ... < /p>
InvalidoperationException: точка свойства '. UserData «не может быть отображена, потому что он имеет тип« объект », который не является поддерживаемым примитивным типом или действительным типом объекта. Либо явно отображает это свойство, либо игнорируйте его, используя атрибут «[notmapped]», либо с помощью «entitytypebuilder.ignore» в 'onmodelcreating'. < /P>
< /blockquote>
Имеет смысл, поскольку LinqPad не запускает приложение (поэтому предположительно не выполняет код в программе. Контекст.
Поиск вокруг, похоже, мне нужно назвать Usenettopologysuite
i попробовал это следующим образом ... < /p>
Код: Выделить всё
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
if (!optionsBuilder.IsConfigured) {
optionsBuilder.UseSqlServer("connection-string", x => x.UseNetTopologySuite());
}
}
Тем не менее, даже с этим кодом на месте я получаю ту же ошибку при попытке запросить базу данных в linqpad. < /p>
Любой, кто может сообщить, как я решаю это ?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ype-object