В этом примере я использую Npgsql в версии 3.1.0-alpha6 разработки.Таймаут при выборе PostgisMultipolygon с Npgsql
Я хочу указать объект PostgisGeometry в качестве параметра в запросе (NpgsqlDbType.Geometry) и снова выбрать объект.
Запросы с такими типами, как Point, MultiPoint, LineString, MultiLineString, Polygon и GeometryCollection будут возвращены правильно. Объект PostgisMultiPolygon с одним полигоном будет возвращен правильно.
Однако он не работает с PostgisMultiPolygon с несколькими полигонами.
PostgisMultiPolygon geom1 = new PostgisMultiPolygon(new[]
{
new PostgisPolygon(new[]
{
new[]
{
new Coordinate2D(40, 40),
new Coordinate2D(20, 45),
new Coordinate2D(45, 30),
new Coordinate2D(40, 40)
}
})
}) {SRID = 4326};
PostgisMultiPolygon geom2 = new PostgisMultiPolygon(new[]
{
new PostgisPolygon(new[]
{
new[]
{
new Coordinate2D(40, 40),
new Coordinate2D(20, 45),
new Coordinate2D(45, 30),
new Coordinate2D(40, 40)
}
}),
new PostgisPolygon(new[]
{
new[]
{
new Coordinate2D(20, 35),
new Coordinate2D(10, 30),
new Coordinate2D(10, 10),
new Coordinate2D(30, 5),
new Coordinate2D(45, 20),
new Coordinate2D(20, 35)
}
})
}) {SRID = 4326};
using (NpgsqlConnection connection = CreateConnection())
{
NpgsqlCommand command = connection.CreateCommand();
command.Parameters.AddWithValue("p1", NpgsqlDbType.Geometry, geom1);
command.CommandText = "Select :p1";
command.ExecuteScalar();
}
using (NpgsqlConnection connection = CreateConnection())
{
NpgsqlCommand command = connection.CreateCommand();
command.Parameters.AddWithValue("p1", NpgsqlDbType.Geometry, geom2);
command.CommandText = "Select :p1";
command.ExecuteScalar(); //timeout occurs...
}
При увеличении CommandTimeout тайм-аут происходит в любом случае. Спасибо заранее!
я могу видеть, как это происходит с, пожалуйста, вы можете открыть вопрос в http://github.com/npgsql/npgsql? –
Проблема: https://github.com/npgsql/npgsql/issues/1022 –