У меня есть хранимая процедура, которая возвращает значение, а не набор данных, и у меня проблемы с ее работой с EF4.
Я видел это: http://dotnet.dzone.com/news/how-retrieve-stored-procedure
Вот что я сделал: добавил в модель процедуру и импортировал функцию.
Первая проблема, с которой я столкнулся, заключалась в том, что параметры в моей процедуре называются как @_Parameter_in
. Это заставило EF ввести их как p_Parameter_in
, потому что это не будет работать с символом подчеркивания в качестве первого символа. Затем, когда я вызвал хранимую процедуру, я вижу в вызове SQL Profiler, что она ищет @p_Parameter_in
, и, конечно, с этим возникла проблема.
Сейчас переименовал параметры и заглянул в SQL Trace - все отлично выглядит и работает. Проблема в том, что я не могу получить значение. Вот как выглядит мой код:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
После вызова newKey.Value
это всегда 0 или любое другое значение, которое я установил. Это не возвращает значение. Я подозреваю, что моя проблема связана с тем, как я импортирую функцию. Я использую скаляры и тип данных Int32
. «Создать новый сложный тип» у меня почему-то отключено. У кого-нибудь была такая проблема?