У меня есть система, которая в основном должна выполнять такой запрос:
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 в качестве параметра.