Я бы использовал частичные классы. В коде DDD нет такого понятия, как уровень данных. Существует уровень данных, и он находится на SQL Server. Код приложения должен содержать только бизнес-уровень и некоторые сопоставления, которые позволяют сохранять бизнес-объекты на упомянутом уровне данных.
Entity Framework - это ваш код доступа к данным, поэтому вы не должны создавать свой собственный. В большинстве случаев схема базы данных будет изменена, поскольку изменилась модель, а не наоборот.
При этом я бы не рекомендовал вам делиться своими сущностями на всех уровнях. Я ценю разделение UI и уровня домена. Я бы использовал DTO для передачи данных в домен и из него. Если бы у меня была необходимая свобода, я бы даже использовал шаблон CQRS, чтобы избавиться от привязки сущностей к DTO - я просто создал бы второй проект доступа к данным EF, предназначенный только для чтения данных для пользовательского интерфейса. Он будет построен поверх той же базы данных. Вы читаете данные через модель чтения (анемично - без бизнес-логики), но модифицируете их, выполняя команды, которые выполняются для реальной модели, реализованной с использованием EF и частичных методов.
Это отвечает на ваш вопрос?