2013-04-12 4 views
0

Im немного смущенный. Я видел некоторый код в одном из проектов, в которых мы используем Linq To SQLЛеса или другой каркас?

<MetadataType(GetType(Customer.CustomerMeta))> Partial Public Class Customer 
Friend Class CustomerMeta 

    <Required(), StringLength(50)> Public Name As String 
    <Required(), StringLength(50)> Public Address As String 
    <Required(), StringLength(20)> Public EmailAddress As String 
    <StringLength(20)> Public Country As String 
End Class 

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

После прочтения это казалось техникой, возможно, строительными лесами (http://msdn.microsoft.com/en-us/library/cc488469(v=vs.90).aspx), но на полпути через это пошаговое руководство я понял, что многие области не существуют (например, файл global.asax) или применяются к проекту, поэтому я видел вышеприведенный код я мог быть на неправильном пути здесь.

Кто-нибудь знает, какая техника/каркас используется выше, и если есть статьи, на которые я могу ссылаться, чтобы подняться до скорости? Если здесь требуются книги или учебный курс, то снова им хочется, чтобы кто-то указал мне в правильном направлении.

Благодаря

+0

Linq To SQL использует инструмент генерации кода. Я думаю, его T4. –

ответ

0

Эти аннотации проверки данных (я не знаю точно «рамки», используя их в вашем случае, поскольку они подвергаются в рамочном .NET и никому программирования против он может использовать их) : в принципе, вы можете украсить участников этими атрибутами (ValidationAttributes), и эти метаданные могут затем использоваться для некоторой проверки, ручной или автоматизированной с помощью некоторой проверки правил схемы данных.

В этом случае свойство Name является: -

  • обязательное поле (т.е. он должен иметь что-то в нем, а не быть пустым),
  • и должно быть 50 символов в длину

И так далее и так далее.

Последнее ограничение может сделать прежнюю избыточную, в зависимости от того, что анализирует правила.

+1

['StringLengthAttribute'] (http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute%28v=vs.90%29.aspx) указывает максимальную длину строки, а не минимум, что делает 'Required' * not * redundant. Это не зависит от того, кто анализирует правила. –

+0

@ DanielHilgarth [Зависит] (http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute.aspx): _ 'Указывает минимальную и максимальную длину символов, разрешенных в данных поле. ». Даже тогда это также зависит от проверки правил. –

+1

Не при использовании конструктора с одним параметром: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute.stringlengthattribute.aspx. Он определяет только максимальную длину. –

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