Хорошие вопросы, Дэррил.Вот мои ответы на ваши пункты:
Определение отдельных классов моделей, соответствующих моделям данных, которые создает EF, - это, как правило, хорошая идея для простого разделения вашего "доступа к данным".от ваших бизнес-моделей объектов, которые будут использоваться во всем приложении.Некоторым людям не нравится этот подход, потому что он создает некоторые накладные расходы, когда речь идет о сопоставлении ваших сущностей с POCO, но, если вы используете такой инструмент, как AutoMapper, накладные расходы минимальны.Преимущество заключается в том, что вы создаете слой разделения между вами и вашей (вероятной) развивающейся моделью данных.
Вы можете определить логику валидации в классе собеседника (просто в частичном классе, который находится рядом).- со своей сущностью), но это будет означать, что вы будете использовать эту сущность в своем приложении, а некоторые будут спорить, что это не лучшая идея.Альтернативный метод, как упомянуто выше, заключается в создании ваших собственных POCO для отражения сущностей, которые создает EF, и размещении ваших атрибутов проверки в POCO.
Я упоминал об этом в предыдущем пункте, носпособ сделать это - определить классы друзей.Дайте классы EF buddy Google, и вы должны найти множество примеров того, как это сделать.
Просто добавьте ко всему этому, если вы решите создать классы POCO, которые отражают ваш EFсущности, такие инструменты, как AutoMapper, могут обрабатывать довольно сложные отношения, когда дело доходит до отображения классов.Таким образом, если у вас есть отношения внешнего ключа в вашей модели данных, AutoMapper может понять это и соответственно отобразить ваши классы POCO (то есть: у вас есть объект, который имеет отношение 1-ко-многим, и POCO со списком объектов, чтобы отразить этоотношения.)
Я надеюсь, что это поможет ...