powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Entity Framework - output параметр в хранимке
6 сообщений из 6, страница 1 из 1
Entity Framework - output параметр в хранимке
    #36337376
bozhday
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Нет сил уже искать причину засора, кто сталкивался помогите! Упростил пример до минимума - все равно не работает. :(

Использую VS 2010 Beta 2, EF 4.0.

Есть хранимка:

ALTER PROCEDURE [dbo].[ds_GetInfo]
@Out INT OUTPUT
AS
BEGIN
SET @Out = 1
END

Добавил в модель, пытаюсь использовать:

using (var myBase = new Entities())
{
var _out = new ObjectParameter("Out", typeof(global::System.Int32));
var _obj = myBase.ds_GetInfo(_out);
var _value = (int)_out.Value;
}

Так вот при всех моих попытках _out.Value равняется null. Есть какие то предположения?
...
Рейтинг: 0 / 0
Entity Framework - output параметр в хранимке
    #36337593
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я Вам советую забить на этот "баг" :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
using (Entities myBase = new Entities())
using (DbConnection connection = (myBase.Connection as EntityConnection).StoreConnection)
using (DbCommand command = connection.CreateCommand())
{
    command.CommandText = "ds_GetInfo";
    command.CommandType = CommandType.StoredProcedure;

    DbParameter parameter = command.CreateParameter();
    parameter.ParameterName = "OUT";
    parameter.DbType = DbType.Int32;
    parameter.Direction = ParameterDirection.Output;
    command.Parameters.Add(parameter);

    connection.Open();
    command.ExecuteNonQuery();

    Console.WriteLine(parameter.Value);
}

P.S. На лицо: серверная независмость (DbConnection, DbCommand, DbParameter). Работает - и да ладно.
...
Рейтинг: 0 / 0
Entity Framework - output параметр в хранимке
    #36337608
bozhday
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

спасибо за ответ. Как раз уже хотел переделывать хранимку в сторону, которую предложили вы, как совершенно неожиданно нашел ответ на свой вопрос. Оказывается бага нет, есть особенность использования. :) Может кому то пригодится:

The ObjectResult is lazy: it reads new rows from the database as the caller reads new elements. This avoids the need to buffer the entire result before returning it to the caller. Until the reader has been consumed, there is no guarantee that the value for the output parameter will be available (e.g. when calling a SQL Server stored procedure), so the Entity Framework waits until the elements have been read before passing through the parameter value.

ObjectParameter outputParameter = new ObjectParameter(typeof(int));
foreach (OrderDetail detail in context.GetPagedOrderDetails(0, 10, outputParameter))
{
// process detail (underlying database reader is still active)
}
// reader is finished and the parameter value is now available
int output = (int)outputParameter.Value;


МСУ, еще раз спасибо!
...
Рейтинг: 0 / 0
Entity Framework - output параметр в хранимке
    #36337660
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот только одного не понимаю.
Неужели в 2010 студии + FW 4.0 сделали обращение к процедуре прямо из контекста?

Новой студии у меня нет, юзаю 2008 + FW 3.5. Так вот процедуры в EF можно использовать только под маппинг Insert, Update и Delete в сущности.

Сам дизайнер edmx мне сгенерил процедуру (это видно в коде модели)

Код: plaintext
1.
2.
<Function Name="ds_GetInfo" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
          <Parameter Name="Out" Type="int" Mode="InOut" />
</Function>

Но обратиться к ней я не могу:

Код: plaintext
1.
2.
3.
using (var myBase = new Entities())
{
     myBase.ds_GetInfo ...
}

Новая фича?
...
Рейтинг: 0 / 0
Entity Framework - output параметр в хранимке
    #36337698
bozhday
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Угу, дождались. :) Вот тут посмотри.
...
Рейтинг: 0 / 0
Entity Framework - output параметр в хранимке
    #36337711
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bozhdayМСУ,

Угу, дождались. :) Вот тут посмотри.

Подправлю битую ссылочку: тынц

Ух-ты, расширили Add Function Import, круто. Спасибо за информацию! :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Entity Framework - output параметр в хранимке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]