C # Entity Framework выдает ошибку на ExecuteFunction

2

Быстрое обновление, я прошел построчно, увидев, что "оценка функции требует запуска всех потоков".

Попытка выполнить хранимую процедуру, используя Entity Framework в С#. Мне удалось сделать это для SELECT внутри хранимой процедуры, но не так много с UPDATE.

Я проверил следующее:

  • Хранимая процедура работает в SQL Server со значениями, которые я передаю вручную
  • Хранимая процедура ожидает bigint качестве параметров, и, следовательно, входные данные отправляются как INT64.

Метод, который я предполагаю, что EF, построенный вокруг хранимой процедуры, проходит через все части, кроме ее оператора return, где я получаю довольно общую ошибку недопустимого исключения.

Есть мысли по этому поводу? Я могу предоставить немного хранимой процедуры и строку метода:

 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SP_HERE", int64, int64, int64, int64);
    }

Вот хранимая процедура:

CREATE PROCEDURE some_SP
    @var1 bigint,
    @var2 bigint,
    @var3 bigint,
    @var4 bigint 
AS
BEGIN
    --SET NOCOUNT ON;

Затем различные обновления, которые я вставил, были оригинальными.

Любые подсказки на макушке головы будут полезны. Не уверен, что является причиной этого, и копание в исключении, кажется, не дает ничего полезного.

Спасибо, парни!

  • 0
    Возможный дубликат stackoverflow.com/questions/39062972/… и stackoverflow.com/questions/20901419/…
  • 0
    @Richard Я хотел бы :(. Если вы найдете что-нибудь, ссылающееся на мое обновление, дайте мне знать :).
Показать ещё 7 комментариев
Теги:
sql-server
entity-framework

1 ответ

1
Лучший ответ

Верните @@ROWCOUNT из хранимой процедуры. Скорее всего, проблема, с которой вы столкнулись, связана с несоответствием между типом, возвращаемым из хранимого процесса, и возвращаемым значением, ожидаемым методом ExecuteFunction.

  • 0
    Еще раз спасибо! Я собираюсь немного покопаться, чтобы понять, почему @rows действительно решил проблему, и обновить, если я что-нибудь найду. Но рад, что работает.
  • 0
    YW ... пожалуйста ... я немного покопался, чтобы узнать, смогу ли я узнать, но так и не наткнулся на реальный ответ ... определенно хотел бы знать, хотя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню