Если ваше приложение поддерживает бизнес-приложение, тогда запросы довольно скоро станут сложными.В таком случае хранимые процедуры экономят много времени, их гораздо проще обслуживать, и они лучше работают с ADO.NET.Почти во всех сценариях я бы предложил использовать хранимые процедуры и ADO.NET.Перенесите как можно больше бизнес-правил и логики в хранимые процедуры, чтобы их было проще поддерживать таким образом.
Используйте наборы данных (таблицы данных) только для извлечения и чтения данных.Любые данные, которые необходимо сохранить в базе данных, должны напрямую обрабатываться в базе данных ... бессмысленно делать это в наборе данных, а затем сохранять то же самое.В многопользовательской среде почти всегда лучше сохранять изменения в базе данных, как только пользователь нажал «сохранить».
Вы можете (должны) использовать бизнес-объекты в приложении для процессов бизнес-логики.
Давайте рассмотрим простой пример сохранения контакта (имя, телефон, электронная почта, адрес).и т. д.), а затем извлекаем список контактов, добавленных сегодня ... Я бы посоветовал вам сделать это следующим образом:
1) Добавление контакта - клиент (веб или другой) собирает данные -> данные сохраняются вбизнес-объект Contact -> проверить объект Contact -> вызвать уровень хранилища для сохранения объекта Contact (добавление слоя хранилища полезно, но не обязательно для сохранения уровня данных абстрактным от клиента) -> хранилище вызывает уровень данных длясохранить объект контакта (здесь можно сделать простой вызов ADO.NET, используя объект Command, чтобы вызвать хранимую процедуру для сохранения контакта в базе данных).В этом случае набор данных не использовался.
2) Получение списка контактов - Клиент вызывает уровень хранилища для получения списка контактов -> Уровень хранилища вызывает уровень данных для извлечения данных ->здесь список данных извлекается как набор данных (datatable) -> возвращает данные обратно клиенту и позволяет клиенту считывать данные непосредственно из datatable во время рендеринга данных.Даже один контакт может быть получен как набор данных.
PS: ORM почти всегда является избыточным.Он почти всегда используется, потому что некоторым разработчикам нравится сохранять все объектно-ориентированным ... поэтому добавляется дополнительный слой, даже если он не делает ничего полезного (IMHO).