C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Есть функция, которая возвращает 1 в случае удачного выполнения, 0 - в случае, если при выполнении были ошибки.
Функция работает одну минуту (если точнее - 56 секунд). Вызов то же работает:
Хочу изменить вызов:
После 20-ти секунд выполнения падает с ошибкой 57014: Цитата: На сколько вижу, 20 секунд указано: [attachment 31955 s1.png] Однако, это поле только для чтения - поменять его не возможно: [attachment 31956 s2.png] Вопрос - как установить conn.CommandTimeout? Или, возможно, проблема не в conn.CommandTimeout - надо установить какой то другой таймаут? |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Через строку соединения управляется www.npgsql.org
Для формирования строки соединения можно использовать вспомогательный класс NpgsqlConnectionStringBuilder (там есть вполне readwrite свойство CommandTimeout). Очевидно, провайдер не позволяет "на лету" менять параметры соединения, да и не нужно этого по большому счёту ------------------ WBR, Igor |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
При старте приложения создаётся System.Data.Entity.DbContext, из Web.config извлекается нужная ConnectionString. О ней речь? думаю, не о ней, а о ConnectionString объекта conn типа NpgsqlConnection:
Так? Но, в данном случае, conn получается из DbContext.Database.Connection. Т.е. надо conn создавать как то иначе? Или, создавать так же, но менять ConnectionString?
Как же тогда сделать, что бы cmd.ExecuteNonQuery(); не вываливалась по таймауту через 20 секунд? |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Вот такой код тоже работает без проблем:
Тут новый connection не создаётся. Хотя... команда Open требуется - вероятнее всего, новый connection создаётся как то неявно. А при явном создании какие то ошибки. Исправлено 1 раз(а). Последнее : S-type, 22.09.19 11:07 |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
А откуда по твоему берётся строка подключения для DbContext.Database.Connection? ------------------ WBR, Igor |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Чуть выше писал:
Эту строку я могу поменять, но - не нужно, т.к. таймаут нужно установить не для всех запросов, которые выполняет программа, а только для одного. Исправлено 2 раз(а). Последнее : S-type, 22.09.19 21:26 |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Как раз таки, проблема в том и заключается - что не могу установить таймаут для отдельной команды (вызова хранимой процедуры):
Исправлено 1 раз(а). Последнее : S-type, 22.09.19 21:30 |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Почитай внимательнее документацию, и issues связанные с этим самым CommandTimeout в официальном репозитории github.com
Возможно тебе надо помимо таймаута для SqlCommand ещё и серверный таймаут настраивать - постгрес умеет убивать сильно долгоиграющие запросы/вызовы со стороны сервера - возможно именно в серверном таймауте дело, а не в клиентском... Ты же не приводишь ни версии используемых компонент, ни законченого примера демонстрирующего ошибку, как тогда рассчитываешь что кто-то сможет реально помочь ------------------ WBR, Igor |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Спасибо - почитаю.
Проблема не горящая... В реальной программе работает самый первый из приведённых фрагментов. А для себя пытаюсь разобраться и понять - как всё это работает. |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Вресии? VisualStudio 2019 Comunity. NeGet: EntityFramework 6.2.0. Npgsql.EntityFramework 2.2.7 PostgreSql 10.10 Исправлено 2 раз(а). Последнее : S-type, 22.09.19 23:56 |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Важнее чем IDE тулза то, под какую платформу пишешь проект - net4xx, что-то ещё более древнее (надеюсь 2019 студия не поддерживает уже фреймворки линейки 2.0 ) или, вдруг какой-то из core Ну значит под какой-то из Full .Net Framework. 2-годичной давности версия. Что мешает обновиться то? Крепко в продакшне проект и нет планов по выпуску хотя бы minor новой версии, только багфиксы? ох-хо-хо, last updated 9/18/2015 - печально это... ------------------ WBR, Igor |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Проект под 4.7.1, в заключительной фазе - уже пишется следующая версия, а в данной обновление NuGet пакетов заморожено, но возможно - если покажу, что в новой версии решены какие то проблемы или есть какие то плюсы. Обновляться до 4.8 в этой версии софта уже не будем, а на счёт Npgsql.EntityFramework 2.2.7 - а есть ли альтернатива?
|
Re: C# - вернуть значение из функции Postgresql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не в курсе. По идее актуальная версия под EF6 это EntityFramework6.Npgsql 3.2.1.1
Но как там дело обстоит с таймаутами - понятия не имею. ------------------ WBR, Igor |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Спасибо за наводку, попробую. |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Начал пробовать перевести программу с Npgsql.EntityFramework 2.2.7 на EntityFramework6.Npgsql 3.2.1.1. Столкнулся с тем, что уже работающий код перестал работать.
Есть хранимая процедура, допускающая null в одном из параметров:
Вызываю с Npgsql.EntityFramework 2.2.7 - всё работает. Вызываю с EntityFramework6.Npgsql 3.2.1.1, вижу: [attachment 31998 s1.png] Вот проект [attachment 31999 TestEntity1.zip] |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Конечно, можно значение каждого параметра проверить на null, и если равен - передавать DBNull.Value. Но, код станет весьма не красивым.
|
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Хотя, в принципе, можно какую то обёртку написать.
|
Re: C# - вернуть значение из функции Postgresql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
github.com
Ну и само обоснование: docs.microsoft.com Цитата: ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 02.10.19 00:13 |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
[attachment 32013 s1.png]
Как в анекдоте - это не баг, это фича... Исправлено 2 раз(а). Последнее : S-type, 02.10.19 08:40 |
Re: C# - вернуть значение из функции Postgresql | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Ещё один фрагмент перестал работать - чтение данных из refcursor-а
[attachment 32014 s2.png] Вот проект [attachment 32015 Pg_1.zip]
Тут точно не "уважением стандартов" |
© 2000-2024 Fox Club  |