Вы умны думать о разработке уровня данных в вашем приложении. В приложении ASP.NET это поможет вам стандартизировать и значительно упростить доступ к данным. Вам нужно узнать, как создавать и использовать ObjectDataSources, но это довольно просто.
Другое преимущество уровня доступа к данным (созданного с использованием отдельного проекта / DLL) заключается в том, что он значительно упрощает модульное тестирование. Я также рекомендую вам создать бизнес-уровень, который будет выполнять большую часть обработки данных (например, бизнес-уровень будет отвечать за перетаскивание ObjectDataSources из DAL для передачи в код пользовательского интерфейса). Это не только позволяет инкапсулировать вашу бизнес-логику, но и улучшает тестируемость кода.
Вы не хотите кэшировать DataSets (или, если уж на то пошло, объекты DAL) в сеансе! Вы создадите веб-приложение таким образом, чтобы изменения записей работали с использованием уникального идентификатора (или другой спецификации первичного ключа) и передавали изменения непосредственно в DAL по мере их внесения. Если бы вы кешировали все, вы бы резко снизили бы масштабируемость вашего приложения.
Обновление: другие участники этой темы продвигают идею использования ORM. Я был бы осторожен с принятием полномасштабного ORM по причинам, которые я ранее обрисовал в общих чертах здесь и здесь . Я делаю согласен, однако, что было бы разумно избегать DataSets. В своей собственной работе я широко использую DataReaders для заполнения моих ObjectDataSources (что тривиально из-за дизайна моего DAL) и считаю его очень эффективным.