Использование NetTopologySuite и EFCore для вставки объектов с типами географии SQL Server.C#

Место общения программистов C#
Ответить
Anonymous
 Использование NetTopologySuite и EFCore для вставки объектов с типами географии SQL Server.

Сообщение Anonymous »

У меня есть устаревший SQL-сервер, который использует тип данных «география» для таблицы для хранения данных с координатами X, Y, Z и M.
Устаревшие проекты C# использовали тип System Библиотека .Data.Entity.Spatial и собственная dll SQLServerTypes с типом DbGeography для сохранения этих записей в базе данных.
Я создаю новую утилиту в .NET8 для вставки записей и я не хочу зависеть от собственных DLL, поэтому я пытаюсь использовать для этого NetTopologySuite и объект MultiPoint.

Код: Выделить всё

 private MultiPoint CreateMultiPoint(DateTime departureTime, IEnumerable
 positions)
{

var coordinates = new List();
var points = new List();

var geometryFactory = NtsGeometryServices.Instance.CreateGeometryFactory(srid: 4326);

foreach (var position in positions)
{
var coordinate = new CoordinateZM(position.Lon, position.Lat, position.Fal,
(position.Svd - departureTime).TotalSeconds);

coordinates.Add(coordinate);

var point = new Point(coordinate) { SRID = 4326 };
points.Add(point);
}

return new MultiPoint(points.ToArray(), geometryFactory);
При сохранении объекта с этой мультиточкой в ​​dbcontext в EFCore возникает следующее исключение:

Код: Выделить всё

 The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 1 ("@p0"): The supplied value is not a valid instance of data type geography. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision.
Похоже, что мультиточка, которую пытаются вставить, представляет собой MultipointZ и, возможно, в ней отсутствует значение M.
Я пробовал множество различных способов построения фабрики геометрии, и ему может понадобиться помощь, поскольку ни один из них, похоже, не работает.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ography-ty
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»