Использование DataAnnotations с платформой Entity Framework

Я использовал Entity Framework с VS2010 для создания простого класса человека со свойствами, firstName, lastName и электронной почтой. Если я хочу присоединить DataAnnotations, как это сделано в этом сообщении , у меня небольшая проблема, потому что мой класс людей динамически генерируется. Я мог бы редактировать динамически сгенерированный код напрямую, но в любое время, когда мне нужно обновить мою модель, весь мой код проверки будет уничтожен.

Первый инстинкт состоял в том, чтобы создать частичный класс и попытаться присоединить аннотации, но он жалуется, что я пытаюсь переопределить свойство. Я не уверен, что вы можете сделать объявления свойств в С#, как объявления функций на С++. Если бы вы могли это ответить. Вот фрагмент того, что я пробовал:

namespace PersonWeb.Models
{
  public partial class Person
  {
    [RegularExpression(@"(\w|\.)[email protected](\w|\.)+", ErrorMessage = "Email is invalid")]
    public string Email { get; set; } 
    /* ERROR: The type 'Person' already contains a definition for 'Email' */
  }
}

Ответ 1

Класс buddy - это более или менее направление, которое ваш фрагмент кода перемещается, за исключением того, что ваш собственный класс Person с индивидуальным кодированием будет иметь внутренний класс, например:

[MetadataType(typeof(Person.Metadata))]
public partial class Person {
    private sealed class MetaData {
        [RegularExpression(...)]
        public string Email { get; set; }
    }
}

Или у вас может быть ваш ручной класс Person и отдельный мета-класс, например:

[MetadataType(typeof(PersonMetaData))]
public partial class Person { }

public class PersonMetaData {
[RegularExpression(...)]
public string Email;
}

Это обходные пути и наличие сопоставленного класса Presentation может быть более подходящим.