ASP.NET MVC, Linq к проверке аннотирования данных SQL

SDK, как ожидают, предложит инструменты программе против определенного системного ресурса или функции. Платформа не обязательно (хотя.NET предлагает полный набор инструментов, таких как компиляторы, и т.д. - но они обязательны для нее для работы так или иначе).

Так, Вы могли разработать Платформу, состоящую только из библиотек, но если Вы назовете ее SDK, то Вы, как будут ожидать, предложите что-то для поддержки разработки.

12
задан rene 9 February 2015 в 14:26
поделиться

4 ответа

Как я уже сказал в своем первоначальном ответе на этот вопрос, вам следует использовать интерфейс. В ответе, опубликованном после моего (который был помечен как Принято), говорилось об использовании класса. Это не так хорошо. Интерфейс - лучший вариант по следующим причинам:

  • Если есть несоответствие между именем в вашем классе LINQ и именем в вашем интерфейсе, компилятор пометит его за вас.
  • Интерфейс не может быть создан, таким образом, это защищает пользователей класса от случайного создания типа метаданных
  • . Если вы используете Resharper (или аналогичный), интерфейс может быть автоматически извлечен из класса LINQ
  • . Интерфейс менее подробен, чем пустой класс
  • Если вы программа против интерфейсов, а не классов (что является хорошей практикой), тогда вы У вас уже есть интерфейс, который вы можете использовать в качестве типа метаданных

Для класса с именем, скажем, «Пользователь», создайте для него интерфейс (скажем, «IUser»), а затем обновите определение своего частичного класса User следующим образом:

[MetadataType(typeof(IUser))]
public class User : IUser

Затем в интерфейсе IUser добавьте к свойствам соответствующие атрибуты аннотации данных:

[Required]       
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
22
ответ дан 2 December 2019 в 03:49
поделиться

For a class called, say "User", create an interface for it (say 'IUser'), and then update the definition of your partial User class as follows:

[MetadataType(typeof(IUser))]
public class User : IUser

Then, in your IUser interface, add appropriate Data Annotation attributes to the properties:

[Required]       
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
9
ответ дан 2 December 2019 в 03:49
поделиться

Linq to SQL generates object classes as partial. An easy way to implement data annotations is to create your own partial class of the object, place the [MetadataType(typeof(YourDataAnnotationClass))] on the partial class you created.

Example:

// Linq to SQL Class
public partial class Article 
{
   public string Title { get; set; }
   ...... etc
}

Create your own MetaData class with Metadata for each field you want to validate

public class MyMetaDataClass
{
    [Required]
    [Range(5,20)]
    public string Title { get; set; }
}

Create a Partial Class for the Object class you want to add metadata to, in this case Articles class:

[MetadataType(typeof(MyMetaDataClass))]
public partial class Article { }

Note: you don't need to specify anything in the class, just the metadata type.

6
ответ дан 2 December 2019 в 03:49
поделиться

Спасибо, но проблема в том, что MS определила прототип MetadataTypeAttrubute как

[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class MetadataTypeAttribute : Attribute

Итак, вам пришлось использовать класс, но не интерфейс


Из Китая Форест Ли: 李晓强 xiaoqianglinsen@163.com (MSN) lixiaoqiang@webservice.com.cn

2
ответ дан 2 December 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: