Я использовал ядро ADO.NET с хранимыми процедурами в базе данных.Затем, используя инструмент, который я написал, весь код доступа к данным генерируется с использованием результата каждой хранимой процедуры в качестве структуры Dtos.
Инструмент с исходным кодом доступен в моем блоге ДанныеУровень доступа CodeGen
Теперь, поскольку вы просто возвращаете данные через службу WCF, нет необходимости переходить из DataReader в Dto и затем сериализовать DTO.Другими словами, вы перебираете свой набор результатов 3 раза в процессе отправки данных.Поэтому, если вы хотите уменьшить использование ресурсов на вашем сервере и получить более высокую производительность, вы можете использовать классы «DataReader-Wrapper», которые генерирует инструмент (вместе с кодом доступа к данным).
Классы-оболочки DataReaderпохожи на строго типизированные DataReaders.У меня есть еще один пост, где я рассказываю об этих и их преимуществах DataReader Wrappers - TypeSafe
Конечно, вы можете изменить инструмент (так как у вас также есть исходный код), чтобы генерировать всеВаш код, включая сервис WCF.Так что все, что вам действительно нужно сделать, это написать хранимую процедуру, и все готово.Весь код DataAccess (с использованием ADO.NET Core - так он легок и очень быстр), код бизнес-уровня и код WCF - это действительно просто «занятая работа», если вы понимаете, о чем я.
РЕДАКТИРОВАТЬ Причина использования хранимых процедур
- Хранимая процедура может возвращать несколько результирующих наборов за один вызов.
- Хранимая процедура может принимать параметры.
- Хранимая процедураПроцедура может иметь операторы управления потоком и может вызывать другие хранимые процедуры (так что вы можете использовать процедуру повторно, например, реструктурировать метод, так что вы можете вызывать его из нескольких других методов).
- Гораздо проще оптимизироватьхранимая процедура, поскольку инструменты работают с ними очень хорошо