На данный момент я установил систему Пакеты .Data.SqlClient и Microsoft.Spatial. Вот мой код:
Код: Выделить всё
using (SqlCommand cmd = new SqlCommand("myproc", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
// Here, GeographyPoint is of type Microsoft.Spatial.GeographyPoint, and
// I am pretty sure this is the wrong type to use...
GeographyPoint gp = GeographyPoint.Create(lat, lon);
cmd.Parameters.AddWithValue("@Location", gp);
connection.Open();
cmd.ExecuteNonQuery();
}
System.ArgumentException: 'Не существует сопоставления типа объекта Microsoft.Spatial.GeographyPointImplementation с известным собственным типом управляемого поставщика
Затем я попытался установите пакет Microsoft.SqlServer.Types, но он несовместим с .Net Core 1.1:
Пакет Microsoft.SqlServer .Types 14.0.314.76 несовместим с netcoreapp1.1 (.NETCoreApp, Version=v1.1). Пакет Microsoft.SqlServer.Types 14.0.314.76 поддерживает: net40 (.NETFramework,Version=v4.0)
Затем я попытался указать что параметр географии равен Udt:
Код: Выделить всё
cmd.Parameters["@Location"].SqlDbType = SqlDbType.Udt;
//cmd.Parameters["@Location"].UdtTypeName = "Geography";
Затем я обновился до .Net Core 2.0. Я снова попробовал добавить пакет Microsoft.SqlServer.Types: на этот раз он установился «успешно», но при сборке проекта я получаю следующую ошибку:
предупреждение NU1701: пакет «Microsoft.SqlServer.Types 14.0.314.76» был восстановлен с использованием «.NETFramework, Version=v4.6.1» вместо целевой платформы проекта «.NETCoreApp, Version=v2.0». Этот пакет может быть не полностью совместим с вашим проектом.
Я не могу получить доступ ни к одному из типов в моем коде, поэтому это не помогло не работает.
И остается вопрос: как передать параметр географии типа SQL Server в хранимую процедуру из .Net Core?
Подробнее здесь: https://stackoverflow.com/questions/508 ... -procedure