.Net Core: невозможно передать параметр «география» в хранимую процедуру SQL ServerC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 .Net Core: невозможно передать параметр «география» в хранимую процедуру SQL Server

Сообщение Anonymous »

Я хочу передать параметр географии типа SQL Server в хранимую процедуру из .Net Core.

На данный момент я установил систему Пакеты .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";
ОДНАКО: я не могу установить для UdtTypeName значение «География» из-за этой проблемы, так что это не поможет. Это не работает, поскольку для параметров Udt требуется UdtTypeName.

Затем я обновился до .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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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