Выполнение хранимой процедуры PostgreSQL с использованием EF Core DbContext.Database.ExecuteSqlRaw

Я попытался выполнить следующую хранимую процедуру:

CREATE OR REPLACE PROCEDURE gselogwebsite_add
(
    _logUserId INT,
    _logSourceId INT,
    _logCat INT,
    _logLevel INT,
    _logType INT,
    _logText TEXT,
    _logDateTimeUTC TIMESTAMP WITHOUT TIME ZONE,
    INOUT _logId BIGINT
)
LANGUAGE plpgsql AS
$BODY$
BEGIN
    ...
    ... 
    ...
END;
$BODY$;

Я попытался вызвать свой ASP.NET Core 8.0 MVC, используя EF Core 8.0.5, со следующим кодом:

context.Database.ExecuteSqlRaw("CALL gselogwebsite_add(@_logUserId, @_logSourceId, @_logCat, @_logLevel, @_logType, @_logText, @_logDateTimeUTC, @_logId)", 
    new NpgsqlParameter("_logUserId", logUserId),
    new NpgsqlParameter("_logSourceId", logSourceId),
    new NpgsqlParameter("_logCat", logCat),
    new NpgsqlParameter("_logLevel", logLevel),
    new NpgsqlParameter("_logType", logType),
    new NpgsqlParameter("_logText", logText),
    new NpgsqlParameter("_logDateTimeUTC", logDateTimeUTC),
    new NpgsqlParameter("_logId", DBNull.Value) { DbType = DbType.Int64, Direction = ParameterDirection.InputOutput }
);

Но я получаю эту ошибку:

Npgsql.PostgresException: '42883: процедура gselogwebsite_add(целое, целое, целое, целое, целое, текст, временная метка с часовым поясом, bigint) не существует

Проверил соединение, все в порядке. Я проверил типы данных, все в порядке. Я проверяю базу данных с помощью DBeaver и вижу там функцию gselogwebsite_add(in int4, in int4, in int4, in int4, in int4, in text, in timestamp, inout int8).

Но по какой-то причине я не могу выполнить эту хранимую процедуру.

Есть идеи?

Спасибо :)

timestamp with time zone выглядит подозрительно.
Svyatoslav Danyliv 18.05.2024 11:31

В процедуре есть TIMESTAMP WITHOUT TIME ZONE, и появляется ошибка: «Временная метка с часовым поясом».

Luuk 18.05.2024 11:31

К какой базе данных подключено ваше приложение ASP.NET? В какой базе данных определена ваша хранимая процедура?

Lajos Arpad 18.05.2024 11:48

СвятославДанилив/Луук – сработало! пожалуйста, укажите это как решение, и я приму ваш ответ...

Sam 19.05.2024 10:35

Почему бы не опубликовать ответ самостоятельно? (см.: Могу ли я ответить на свой вопрос?) (Извините, мне лень писать ответ о чем-либо, к чему вы могли бы прийти, читая (и пытаясь понять) сообщение об ошибке 😉)

Luuk 19.05.2024 10:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Ef Core 6+ Npgsql будет переводить DateTime с KindDateTimeKind.Utc на TIMESTAMP WIH TIME ZONE, DateTimeKind.Local и DateTimeKind.Unspecified на TIMESTAMP WITHOUT TIME ZONE. Пожалуйста, убедитесь, что logDateTimeUTCDateTime.Kind не является UTC. Если вы убедитесь, что это не UTC, то, насколько мне известно, это может быть внутренняя проблема EF Core, и Npgsql дайте мне знать, чтобы я подробно рассмотрел вашу проблему.

Другие вопросы по теме