Для нас решением было заставить EF прочитать возврат хранимого процесса, добавив к нему функцию .FirstOrDefault ().

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

Ответы на вопрос(1)

Ваш ответ на вопрос