Когда я пишу свой .NET-код как разработчик приложений - это не говорит о том, что он завышает мое собственное эго, а говорит о том, что моя главная цель - писать приложения, которые неизбежно захотят расширяться и изменяться снова и снова. снова.
Поэтому я пишу код своей модели в подпапках BOL и DAL.
DAL обрабатывают весь код базы данных - с BaseDAL, который имеет функции для получения наборов данных и функции для получения ВОЗВРАЩАЕМЫХ ЗНАЧЕНИЙ (с и без наборов данных) - я использую только хранимые процедуры.
И BOL, моделируют реальные объекты, и я вызываю соответствующий DAL всякий раз, когда мне нужны данные из базы данных. Таким образом, BOL - это фактический BOL, и я могу изменить DAL всякий раз, когда мне нужно.
Разделение является ключом к хорошему развитию, и разделение BOL от DAL, на мой взгляд, имеет смысл. Вы не должны делать вызовы БД из контроллера, это просто неправильно, ИМХО.