Chamando procedimento armazenado com parâmetros
Eu tenho um procedimento armazenado que retorna um valor, não um conjunto de dados, e tenho problemas para que ele funcione com o EF4.
Eu já vi isso:http://dotnet.dzone.com/news/how-retrieve-stored-procedure
Aqui está o que eu fiz: Adicionei um procedimento ao modelo e importei uma função.
O primeiro problema que tive foi o fato de os parâmetros no meu procedimento serem nomeados como@_Parameter_in
. Isso fez com que a EF os trouxesse comop_Parameter_in
porque não funcionaria com um sublinhado como o primeiro caractere. Então, quando chamei o procedimento armazenado, posso ver na chamada do SQL Profiler que ele procura@p_Parameter_in
e, claro, houve um problema com isso.
Agora, renomeei os parâmetros e procurei no SQL Trace - tudo parece e funciona muito bem. O problema é que não consigo obter o valor. Aqui está a aparência do meu código:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
Depois de ligarnewKey.Value
, é sempre 0 ou qualquer valor que eu definir. Não traz o valor de volta. Suspeito que meu problema seja com a forma como importo a função. Eu uso escalares e tipo de dadosInt32
. "Criar novo tipo de complexo" está desativado para mim por algum motivo. Alguém teve esse problema?