Как вызвать хранимую процедуру для SELECT в EF4 для заполнения EntityDataSource - PullRequest
0 голосов
/ 09 января 2012

Я пытался исследовать использование EF4 для моего проекта и столкнулся с этой «интересной» проблемой.

При создании edmx существует простой способ подключения сущностей к компоненту пользовательского интерфейса (например, DevExpress GridView), проходящему через EntityDataSource.

Вопрос: Как вы думаете, есть ли лучший способ привязать мои сущности к элементам управления?

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

Вопрос: Есть ли способ использовать хранимую процедуру выбора, как это делается для вставки / обновления / удаления, и продолжить использование EntityDataSource?

Вопрос: Считаете ли вы разумным решение заполнить сущности представлениями базы данных, чтобы запустить выбор и использовать сопоставление хранимых процедур в противном случае?

Спасибо за вашу помощь и мысли.

1 Ответ

1 голос
/ 11 января 2012

Первый вопрос несколько открыт в nautre и скорее зависит от используемых вами элементов управления и шаблона проектирования (если таковой имеется), которого вы пытаетесь придерживаться. С точки зрения разработки, если вы проходите модульное тестирование, вы всегда должны учитывать разделение проблем и то, насколько тесно вы хотите привязать элементы управления к своему «домену». Это приложение ASP.NET?

Второй вопрос довольно распространен, особенно в корпоративных сценариях, где у вас есть проблемы с безопасностью и серьезные администраторы баз данных (!). Вы МОЖЕТЕ реализовать выбранные хранимые процедуры. Я бы посоветовал прочитать пост найденный здесь .

Что касается третьего вопроса, снова можно использовать представления в Entity Framework. Есть несколько статей и подводных камней, я бы тоже сначала проверил эту статью .

2 и 3 действительно сводятся к требованиям клиентов. В моем текущем проекте мы используем хранимые процедуры для операций создания, обновления и удаления, в то же время предоставляя прямой доступ к нашим таблицам по мере необходимости. Это эффективно, так как позволяет вам использовать собственные возможности EF и LINQ с точки зрения динамических запросов. Опять же, это соответствует нашим требованиям, но может не соответствовать вашим!

EDIT

Я просто хотел предоставить еще пару ссылок, касающихся вашего последнего комментария, так как они более явно связаны с EntityDataSource. Соответствующая статья SO здесь , и она ссылается на хорошую статью здесь , которая должна вам помочь.

РЕДАКТИРОВАТЬ :

Еще один вариант - добавить определяющий запрос, чтобы контролировать, как EF выполняет выбор. Смотрите здесь .

Ник.

...