У меня есть хранимая процедура, которая возвращает значение, а не набор данных, и у меня возникают проблемы с его настройкой для работы с 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
. «Создать новый сложный тип» для меня почему-то отключен. У кого-нибудь была такая проблема?