Использование Dapper с пространственными типами SQL в качестве параметра

У меня есть система, которая в основном должна выполнять такой запрос:

SELECT * FROM MyTable WHERE @parameter.STIntersects(MyGeometryColumn)

Это довольно просто сделать при использовании ванильных параметров SQL, вам просто нужно создать свой параметр нетипичным способом (где переменная построителя - это SqlGeometryBuilder, который я использую для создания прямоугольника):

command.Parameters.Add(new SqlParameter
{
    UdtTypeName = "geometry",
    Value = builder.ConstructedGeometry,
    ParameterName = "@paremeter"
});

Теперь, когда я пытаюсь сделайте это с помощью dapper, я получаю сообщение об ошибке, что он не может понять, как использовать это в качестве параметра. Кто-нибудь, у кого это работает, или какие-либо указатели на то, как это включить? У меня есть обходной путь, но он включает использование строкового представления и преобразование его в тип геометрии в моем SQL-запросе. Я действительно не хочу этого.

Чтобы ответить на комментарий, я получаю сообщение об ошибке: «Параметр члена типа Microsoft.SqlServer.Types.SqlGeometry не может использоваться в качестве значения параметра». Другими словами, dapper не знает, как обращаться с объектом SqlGeometry в качестве параметра.

8
задан Erik van Brakel 14 July 2011 в 08:58
поделиться