2010-09-30 8 views
0

Таким образом, у меня есть требование клиента использовать только хранимые процедуры для всех операций с базой данных. Я создал хранимые процедуры CRUD для каждой из моих таблиц, а затем создал мои модели Entity.Отображение хранимых процедур объекта?

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

Итак, почему нет возможности сопоставить выбор напрямую? Для меня были бы огромные преимущества!

Возможно, моя хранимая процедура не подходит?

У кого-нибудь есть идеи?

ответ

2

Вы должны использовать функцию в EF, которая позволяет добавлять хранимые процедуры к диаграмме, и они становятся методами, которые вы можете вызвать напрямую. Если вы затем откроете браузер моделей, затем отследите введенные вами процедуры SELECT, вы можете дважды щелкнуть их и привязать тип возвращаемого значения к модели сущности. Соглашение о вызовах будет затем

MyEntity entity = myDB.MyStoredProcedure().FirstOrDefault(); 

НТН, Jon

+0

Это обходной путь, который я использую. Но на самом деле это не решает проблему - например, с классом DomainService, он хочет использовать свойство Customer для получения свойств - мне нужно вручную изменить мою службу, чтобы использовать мою импортированную функцию, что плохо, если мне нужно восстановить мои оказание услуг. Вставка обновления и удаления может быть сопоставлена ​​так, что на уровне сущности они используются. Но вы не можете сделать это для выбора. – Nicros

+0

На самом деле это не так много «обходного пути», кажется логически законным. Для выборок, как я упоминал («привязать тип возврата к модели сущности»), хранимые процедуры могут быть сопоставлены непосредственно с типом сущности, а не с типом, специфичным для функции хранимой процедуры. Итак, в моем примере MyStoredProcedure() возвращает экземпляр MyEntity, а не что-то еще. По умолчанию это что-то еще, вам нужно вручную сопоставить вывод с MyEntity с уровня импортированного интерфейса, это противоположный конец назначения sproc для объекта. Та же разница действительно, просто другое место. –

+1

Извините, если я не был достаточно полезен, но чтобы ответить на ваш первоначальный вопрос, не так много можно сделать, если lib все еще имеет это ограничение. Сейчас я все еще расстроен тем, что INSERT через SPROC не привязывает столбец IDENTITY к выходному параметру. Для того, чтобы быть предположительно «корпоративным классом», EF4 по-прежнему довольно жалкий, не благодаря этому и обходным решениям, которые необходимо выполнить. –

Смежные вопросы