Использование 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 может быть более подходящим.
Ответ 2
Вам нужно либо использовать класс "приятель" метаданных, либо (мой предпочтение) проект в модель презентации вместо привязки представлений непосредственно к объектам.