1. Для сервисов и их данных создаются контракты (interface). Интерфейсы принимают и отдают тоже интерфейсы или примитивные типы. Нужно для простой возоможности тестирования (подмена тех или иных сервисов на тестовую реализацию) и для возможности более простого распараллеливания работы.
2. Уже при реализации интерфейсов создаются классы бизнес-объектов (на основе соответствующих интерфейсов, просто нажимаешь правой кнопочкой implement).
Вопрос: чем плохо эти же классы бизнес-объектов наделить атрибутами разными, в том числе Key, Index, Required и пр. и позволить им сохраняться/восстанавливаться через EF? Какие конкретные минусы?
Стали бы вы делать специальные сущности для EF, которые на 90% совпадают с бизнес-объектами?