Ответ на 1:
Лучший способ передачи сущностей между уровнями зависит от вашего приложения. Вы можете создавать DTO, что является моим предпочтительным решением, хотя сериализация сущностей возможна , но вы должны убедиться, что это именно то, что вы хотите сделать, и помнить:
"Когда вы используете двоичную сериализацию и сериализацию контракта данных WCF, если сериализуемый объект имеет связанные объекты в графе объектов, эти объекты также сериализуются. Сериализация XML не сериализует связанные объекты."
Automapper работает автоматически, сопоставляя свойства, а не записывает все операторы, такие как:
dto.id = entity.id;
...
all other dto assignment operations
вы скоро увидите, что количество кода становится сложным, поэтому вы сохраните немало этих = этих строк кода, особенно если у вас есть классы представления, а также объекты dto, и я обнаружил, что это соответствует желаемому. Насколько мне известно, automapper будет работать только в том случае, если имена между сущностью и DTO одинаковы, и он может отображаться между типами этих свойств. Вы можете добавить правила отображения для преобразования между типами, хотя, если dto и сущность хранят данные в другом типе.
Ответ на 2:
Если вы преобразуете объекты в DTO и модифицируете их на более высоких уровнях, как вы планируете сохранять их обратно через структуру сущностей? Обычно вы просто конвертируете их обратно в связанные сущности / создаете новую сущность и отправляете эти изменения.