AutoMapper - это хороший инструмент для преобразования классов в класс.Тем не менее, я думаю о DAL, который сочетает в себе Linq2Sql и AutoMapper, и я думаю, почему бы просто не пойти с Fluent NHibernate?Его очень легко настроить, он работает практически с любой базой данных, включая SqlExpress, и есть поставщик Linq, который довольно легко интегрируется.Все это бесплатный код с открытым исходным кодом, и он очень часто используется, поэтому имеется достаточно документации и поддержки.
Если вы хотите остаться с Linq2Sql, но имеете более полнофункциональную модель предметной области, вы можете подумать о выводе своегомодель предметной области из DTO.Это позволит вам иметь бизнес-логику в домене со свойствами, передаваемыми DTO.Однако следует понимать, что объекты Linq2SQL не смогут напрямую преобразовываться в объекты домена;вам понадобится конструктор в домене, который принимает DTO и копирует информацию в домен (требуется как минимум одностороннее сопоставление DTO с доменом).Тем не менее, домен может рассматриваться как DTO (потому что класс всегда является его родителем), поэтому обратное преобразование не требуется;просто передайте класс домена в хранилище, где он должен ожидать DTO.