2011-05-25 6 views
3

Я хочу использовать апробацию для проверки. У меня уже есть модель, реализованная сущностью. Мне нужна проверка данных, и я знаю, что есть anotation данных, который очень хорош ... Но я действительно не знаю, как я могу использовать его с картой сущности правильно.Entity framework + аннотация для проверки

Должен ли я редактировать объекты? Или я должен написать отдельный класс? Или я должен написать класс, который наследуется от сущностей?

Можете ли вы сказать мне, как лучше всего использовать?

Я хочу написать как можно меньше кода.

+1

Какие проверки вы хотели бы добавить? Можете ли вы показать нам некоторый код класса? –

ответ

14

Способ обработки это комбинация частичных классов и специального атрибута, который позволяет прикрепить метаданные к другому классу.

Сущность framework уже помогает вам, генерируя все классы как частичные классы. Таким образом, если у вас объект в модели под названием Настройки, ФВ бы создать это:

public partial class Setting : INotifyPropertyChanging, INotifyPropertyChanged 
{ 
    // Auto-gen Properties, methods, etc go here. 
} 

Это означает, что вы можете иметь любое количество других partial class Setting фрагментов в других файлах, которые ФВ не тронут, если/когда вы обновляете этот код. Если вы хотите добавить данные проверки атрибутов для этого требуется два шага:

  1. Attach атрибут MetadataType к классу настройки. В теле этого фрагмента частичного класса не должно быть ничего, и только там можно связать атрибут.

    [MetadataType(typeof(SettingMetadata))] 
    public partial class Setting 
    { 
    } 
    
  2. Создайте второй класс, который имеет те же имена полей как общественного класса EF, и связать любые проверки данных атрибутов вы хотите. Компилятор будет сопоставлять поля класса метаданных с полями класса EF по имени и действовать так же, как и любые метаданные, привязанные ко второму классу, также относятся к первому классу.

    public class SettingMetadata 
    { 
        [Display(Name="Base Rate")] 
        [Required] 
        public decimal Rate 
        { 
         get; 
         set; 
        } 
    
        [Display(Name = "Permit Payments")] 
        public Boolean AllowPayments 
        { 
         get; 
         set; 
        } 
    
        [Display(Name = "Base URL For Web Service")] 
        [Required] 
        [SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Type must match linked metadata type.")] 
        public string WebServiceUrl 
        { 
         get; 
         set; 
        } 
    } 
    

Как упоминалось в сообщении подавления FxCop, имя и тип полей должны совпадать между классом метаданных и связанного класса для этой работы.

2

Аннотации данных - это атрибуты валидатора, которые необходимо добавить к свойствам объекта. Существует ряд стандартных атрибутов, или вы можете создавать собственные, если они не удовлетворяют вашим потребностям.

Check this link.

Смежные вопросы