Entity Framework - Аннотации данных - PullRequest
1 голос
/ 15 марта 2011

Использование MVC3 и Entity Framework.

Я пытаюсь получить подтверждение из модели данных

Вопрос: Как сохранить структуру сущностей, как я могу автоматически вставить тег [MetadataType ниже для моего класса друзей?

[EdmEntityTypeAttribute(NamespaceName="ModelValidationTestModel", Name="Person")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
[MetadataType(typeof(Person_Validation))] // I want EF to put this line in automatically
public partial class Person : EntityObject

...

[Bind(Exclude="PersonID")]
public class Person_Validation
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
    [Required]
    public int Age { get; set; }
    [Required]
    public string Email { get; set; }
}

Используя пример из: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

Ответы [ 2 ]

9 голосов
/ 25 марта 2011

Я думаю, что лучший вариант - не связываться с классом, сгенерированным EF.Вместо этого определите свой собственный частичный класс:

[MetadataType(typeof(Person_Validation))]
public partial class Person
{
   //rest of class may be empty
}

Вы можете сделать это в том же файле, что и класс Person_Validation, если хотите.

Это не автоматически, но безопасно (ваши изменения выиграныне теряйся)Этот подход будет работать с любой структурой генерации кода (которая использует частичные классы), а не только с EF.

3 голосов
/ 15 марта 2011

Аннотации / атрибуты данных запекаются во время компиляции, и вы не можете добавлять их динамически. Я бы порекомендовал вам избегать передачи / получения ваших моделей EF в / из представлений. Вы должны использовать модели представлений, которые являются классами, специально разработанными для нужд данного представления. Это те модели представлений, которые будут обрабатывать определенные виды проверки, такие как требуемые, формат, ...). Затем вы можете использовать AutoMapper , чтобы ваш контроллер отображал карту между вашими моделями вида и EF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...