DBML должен быть частью уровня данных, а не напрямую доступным для бизнес-уровня. Вместо этого лучше всего раскрывать методы для получения и сохранения сущностей и сохранять взаимодействие со спецификой постоянства, сохраняемой под прикрытием (в данном случае это Linq2Sql, но, абстрагируя ее, вы можете позже перейти на Linq2Entities или что-то еще, не нарушая свой приложение).
это также хорошая модель, если необходимо выполнить несколько запросов и немного манипулировать данными для создания ваших сущностей или выполнить дополнительную работу при сохранении (работа с внешними ключами для дочерних таблиц и т. Д.) В том смысле, что она сохраняет эти детали скрыты от других уровней.
относительно комментариев Стивена о том, что L2Sql плохо сериализуется, к сожалению, это правда, если вы используете то, что дает вам конструктор Linq2Sql из коробки. хотя несколько обходных путей в частичных классах достаточно легко это исправляют.