-Так как в базе данных уже определены внешние ключи и уникальные ограничения и т. Д., Как и где реализовать проверку для получения лучшего и наиболее гибкого результата для использования в ASP.NET MVC3?
Это должно происходить через вашу сгенерированную модель. Ключи автоматически выводятся. Если вы перепроектируете существующую базу данных, атрибуты будут созданы для вас. Если нет, то есть основные правила, которые следуют. Например, структура сущностей будет пытаться использовать первичный ключ с автоинкрементом, если вы не укажете его с помощью
[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
Отношения уже являются частью вашей модели, поэтому вы сохраняете ссылочную целостность, и аннотации данных будут определять правила проверки.
-Лучше ли реализовывать атрибуты и CustomValidation или использовать блоки TryCatch для отлова ошибок из базы данных?
Реализация атрибутов. Определите ваши классы метаданных с вашими атрибутами в них.
Кроме того, вы хотите перехватывать любые ошибки БД для всего, что является неожиданным, если в вашей БД есть дополнительная логика, не определенная в вашей модели (попытка catch на каком-то уровне обычно должна использоваться в любом случае для целей ведения журнала_
-Does Validator.TryValidateObject (myModelObject, context, results, true); использовать правила проверки, определенные только как атрибуты, или он может использовать правила, определенные в EntityTypeConfiguration?
Насколько я знаю, используются только атрибуты. Я попытаюсь проверить это позже, так как я также хотел бы получить определенный ответ на этот вопрос:)