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