Как правильно использовать ObjectResult с входными параметрами для StoredProcedure в Entity Framework? (Вывод сопоставляется со свойством сложного типа)

У меня есть несколько списков со свойством SelectedItem, которое я намерен использовать в качестве входных параметров для выполнения моей хранимой процедуры в Entity Framework.

Теперь я понимаю, что моя единственная надежда на легкое возвращение объектов сущностей в результате моей хранимой процедуры состоит в том, чтобы сопоставить хранимую процедуру (или импорт функции) со сложным типом, который соответствует выходным данным. (Использовано сообщение Джули Лерман здесь принять это решение.)

Однако мне нужна помощь в использовании ObjectResult с EntityFramework, чтобы захватить свойства SelectedItem моего списка и передать их хранимой процедуре (и, таким образом, вывести мои объекты сложного типа). Кто-нибудь знаком с этим процессом?

ЛЮБАЯ помощь будет оценена (догадки включены). Пожалуйста, дайте мне знать, если я могу быть более ясным.


person Community    schedule 06.08.2012    source источник


Ответы (1)


Вы можете получить к нему доступ как к вызову функции, а порядок параметров определяется EF:

using (var db = new YourEntityContext())
{
    var result = db.YourFunctionImportName(
        Convert.ToInt32(ddlWhatever1.SelectedValue),
        Convert.ToInt32(ddlWhatever2.SelectedValue));

    //Int32 used as an example, use whatever type your function import is expecting.
    //Do whatever with result.
}
person lukiffer    schedule 06.08.2012
comment
Большое спасибо! Все еще немного запутался в том, как я выгружаю содержимое результата (который является таблицей) в мой объект сложного типа. Не могли бы вы предоставить немного больше деталей? Я здесь новичок. - person ; 07.08.2012
comment
EF должен позаботиться обо всем этом за вас — если тип возвращаемого значения на стороне SQL — table, в конструкторе EF вы должны иметь возможность сопоставлять столбцы со свойствами сложного типа, а затем указывать, что функция возвращает IEnumerable из сложный тип. - person lukiffer; 07.08.2012
comment
Спасибо за ваш ответ - я все еще немного не понимаю, как результат передается моей сущности. - person ; 07.08.2012
comment
Какой тип результата при отладке эквивалента примера кода в ответе? Он должен быть IEnumerable<T> вашей сущности или определенного пользователем сложного типа. - person lukiffer; 07.08.2012
comment
мой метод выглядит так: private IEnumerable ‹ReturnPnsPerAtts_result› GetPnsPerAttsQuery(MyEntities myEntities){ var pnsPerAttsQuery = myEntities.ResturnPnsPerAtts(Convert.ToInt32(shapeListBox.SelectedValue),....,Convert.ToInt32(attribute12ListBox.SelectedValue)); вернуть pnsPerAttsQuery; который я вызываю с помощью: IEnumerable‹ReturnPnsPerAtts_Result› pnsPerAttsQuery = this.GetReturnPnsPerAttsQuery(myEntities); Но мой взгляд пуст. - person ; 08.08.2012