2012-01-16 5 views
0

Я в процессе добавления EF (4.2) в существующий проект .NET.Должны ли sprocs (всегда) возвращать полный объект?

Существующая база кода в основном полагалась на ADO.NET для вызова нескольких sprocs. Теперь, когда мы движемся к EF, я хочу убедиться, что мы делаем это наилучшим образом, самым удобным образом.

Моя проблема заключается в том, что текущий sproc базовый код не всегда возвращает полную информацию для лиц они были названы в честь:

GetUsersByAdministrator (интермедиат adminId)

Существующий (sproc) код возвращает только USERID и имена и фамилии.

Для меня эта функция не возвращает «Пользователи» и не должна включаться (как указано) в бизнес-логику пользователей.

Мне кажется неприятным, если мы создадим впечатление, что функция возвращает «Пользователь», но не возвращает полную сущность.

TL; DR

При реализации BLL должны все отступающие хранимые процедуры материализовать полную сущность?

например. Должен ли статический метод класса Users, называемый GetUsersByXYZ, всегда возвращать полный объект User?

User.GetUsersByXYZ (интермедиат идентификатор)

Если эти функции будут лучше расположены в отдельной сборке полезных функций и методов переименовать в более подходящие имена Util.GetUserIdAndNamesByXYZ?

ответ

1

При внедрении BLL должны ли все поддерживаемые хранимые процедуры материализовать полный объект?

Нет. Они могут материализовать сущность, сложный тип или даже неотображенный класс.

Должен ли статический метод класса Users, называемый GetUsersByXYZ, возвращать полный объект User?

Это примерно именование. То, что ваши хранимые процедуры в настоящее время возвращают, - это проекция пользовательских данных - она ​​возвращает только данные, необходимые в определенном контексте. Поэтому дайте проекции другое имя типа, например UserNameInfo, и используйте его.

Если эти функции будут лучше расположены в отдельном собрании функций полезности и методов переименовать в более подходящие имена Util.GetUserIdAndNamesByXYZ?

Помощник помощника или нет, он все равно будет зависеть от EF => он является частью доступа к данным.

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