Избавьтесь от модели сейчас, прежде чем удалить ее позже, потребуется рефакторинг всего приложения.Последний проект, над которым я работал, использовал эту архитектуру, и поддержание уровня DTO и отображений на уровне модели базы данных - огромная боль в заднице и не дает никаких полезных преимуществ.Одна из главных неприятностей заключается в том, что LinkToSql не поддерживает эффективно отключенную модель данных.Вы не можете обновить таблицу базы данных, создав новую сущность БД с первичным ключом, совпадающим с существующей записью, а затем вставьте ее в контекст данных.Сначала вы должны извлечь объект из базы данных, обновить его, а затем зафиксировать изменения.Управление этим приводит к очень неприятным методам обновления, чтобы отобразить все свойства из ваших DTO в ваши классы LinqtoSql.Это также нарушает всю модель отложенного выполнения LinqToSql.Даже не заводите меня на проблемы, которые это вызывает со свойствами родительских классов, которые являются коллекциями дочерних DTO (например, DTO клиента со свойством Orders, которое содержит коллекцию DTO заказов), управление этими отображениями действительно очень сложное,пришлось сделать несколько обширных оптимизаций, потому что получение нескольких сотен записей привело к тому, что LinqToSql сделал 200 000 обращений к базе данных (по общему признанию, также был некоторый довольно тупой код, но вы получили картину).
Единственная действительная причина дляИспользуйте DTO, если вы хотите иметь несколько подключаемых слоев доступа к данным, например LinqToSql и NHibernate для поддержки разных серверов БД.Таким образом, вы можете поменять доступ к данным позже, не меняя другие слои.Если вам не нужно этого делать, спасите себя от боли и просто используйте сущности LinqToSql.