Я думаю, что все в порядке, чтобы передать бизнес-объект на уровень доступа к данным. Я думаю, что работа BLL состоит в том, чтобы просто работать с его объектами, проверять, соблюдаются ли все правила, что может быть сохранено, кем, на каких полях, времени и т. Д.
Как только он это сделает, он должен передать его в DAL, и я думаю, что это задача выяснить, как преобразовать то, что он получил, во что-то, что можно сохранить, но он не будет проверять, что сохраняется или читается, или кем, он просто сделает это. Это может быть прямолинейно, по-другому, но если ваша логика mdoels не соответствует вашей модели данных 1: 1, тогда DAL должен выполнить все преобразования.
Что касается привязки вашего DAL к содержимому в BLL, я думаю, вам следует беспокоиться об обратном, связывая свой BLL с вашим DAL. Я бы использовал интерфейс для представления вашего DAL (как в IRepository) таким образом, чтобы вы могли заставить свой BLL вызывать любой механизм сохранения, просто изменив тип используемого IRepository (дополнительные очки, если вы используете IoC: P). Конкретные классы, которые реализуют IRepository, будут привязаны к бизнес-объектам, но они должны знать, что они сохраняют, не так ли? в то время как BLL НЕ должен знать, что делает экономию.