Попробуйте использовать Function Import
.
- Щелкните правой кнопкой мыши на имени EntitySet (заголовок)
- Выберите Добавить-> Импорт функций
Вот хороший пост в блоге, который вы можете проверить. Инструменты ADO.NET Entity Framework: Хранимые процедуры, автор Гай Бурштейн
Обновление: Извините, я пропустил часть о EntityDataSource
, поэтому я не знаю ни одного свойства, доступного для доступа к импорту функции из EDS, но вы можете попробовать использовать свойство CommandText.
<asp:EntityDataSource ID="SolutionsDataSource" runat="server"
CommandText="DataModel.SearchFunction(@Keywords)"
ConnectionString="name=AdventureWorksEntities">
<CommandParameters>
<asp:ControlParameter Name="Keywords"
ControlID="SearchTextbox" Type="String"/>
</CommandParameters>
</asp:EntityDataSource>
Обновление: Что ж, похоже, у меня плохие новости. После использования Reflector для глубокого погружения в EntityDataSource
. EntityDataSourceView
создается с использованием QueryBuilderUtils.ConstructQuery
, что в свою очередь вызывает context.CreateQuery<T>
. Для выполнения функции импорта вам потребуется вызов context.ExecuteFunction<T>
. Кажется, в этом выпуске не было никакой поддержки для ExecuteFunction, в блогах, которые я читал, упоминалось, что это было запланировано, но в этот выпуск это не вошло, будет ли это в будущих выпусках, которые я могу не говори.
При этом я бы порекомендовал использовать ObjectDataSource
, который вы можете создать так, чтобы он все еще поддерживал разбиение на страницы, сортировку и т. Д. Если вы откроете вопрос ObjectDataSource по этой теме, пришлите мне комментарий здесь, и я приму взгляд.