Пользовательская проверка с MVC2 и EF4 - PullRequest
2 голосов
/ 01 мая 2010

в блоге ScottGu - пример использования пользовательской проверки MVC2 с EF4: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

Так вот проблема:

Когда Дизайнер в VS2010 создает Объекты для БД, наряду с примером вы должны добавить [MetadataType (typeof (Person_validation))] Аннотация к этому классу.

Но когда я что-то изменяю в конструкторе, все эти аннотации теряются.

Возможно ли сохранить самостоятельно внесенные изменения в файл edmx или есть какой-либо лучший способ применения System.ComponentModel.DataAnnotations к сгенерированным объектам?

Спасибо.

1 Ответ

6 голосов
/ 01 мая 2010

Вы делаете это с шаблоном, который называется «классы приятелей». По сути, вы создаете отдельный класс с вашими метаданными и создаете частичный класс, который связывает сгенерированные сущности с вашим другом.

Для простого примера, скажем, у вас есть сущность Person, и вы хотите установить обязательное свойство FirstName. Это то, что вы будете делать за пределами ваших сгенерированных файлов:

[MedadataType(typeof(PersonMetadata))]
partial class Person { } // the other part is generated by EF4

public class PersonMetadata
{
    // All attributes here will be merged into the generated class,
    // thanks to the partial class above. Just apply attributes as usual.

    [Required]
    public string FirstName { get; set; }
}

Подробнее об этом подходе вы можете узнать здесь . И ScottGu на самом деле тоже говорит об этом в статье, на которую вы ссылаетесь. Посмотрите под заголовком «Шаг 5: Сохранение в базе данных»;)

...