Генерация аннотаций данных из сгенерированных классов

У меня есть объект linq to sql или, если необходимо, объект Entity Framework.

Я хочу сделать аннотации данных MVC 2 для них, но я бесконечно ленив.

Есть ли способ автоматически генерировать аннотации данных а-ля

[Bind(Include = "Title,Description,EventDate,Address,Country,ContactPhone,Latitude,Longitude")]
[MetadataType(typeof(Dinner_Validation))]
public partial class Dinner
{
    public bool IsHostedBy(string userName)
    {
        return HostedBy.Equals(userName, StringComparison.InvariantCultureIgnoreCase);
    }

    public bool IsUserRegistered(string userName)
    {
        return RSVPs.Any(r => r.AttendeeName.Equals(userName,     StringComparison.InvariantCultureIgnoreCase));
    }
}

public class Dinner_Validation
{
    [Required(ErrorMessage = "Title is required")]
    [StringLength(50, ErrorMessage = "Title may not be longer than 50 characters")]
    public string Title { get; set; }

    [Required(ErrorMessage = "Description is required")]
    [StringLength(265, ErrorMessage = "Description may not be longer than 256 characters")]
    public string Description { get; set; }

    [Required(ErrorMessage = "HostedBy is required")]
    public string HostedBy { get; set; }

    [Required(ErrorMessage = "Address is required")]
    public string Address { get; set; }

    [Required(ErrorMessage = "Country is required")]
    public string Country { get; set; }

    [Required(ErrorMessage = "Phone# is required")]
    public string ContactPhone { get; set; }
}

Так что я не должен делать все это сам?

2 ответа

Я позаимствовал немного из своего набора инструментов Silverlight для этого, но, похоже, он отлично работает для MVC3 в VS2010.

  1. Скомпилируйте ваш проект. Это важно, если вы только что создали свою модель Entity Framework.
  2. Щелкните правой кнопкой мыши по вашему проекту. Нажмите Добавить / Новый элемент.
  3. Выберите "Класс обслуживания домена" в качестве типа. Нажмите Добавить.
  4. Выберите вашу модель в раскрывающемся списке.
  5. В списке объектов выберите все объекты, для которых вы хотите аннотации данных.
  6. Установите флажок "Создать связанные классы для метаданных". Нажмите ОК.
  7. Вы получите два сгенерированных класса. Просто удалите тот, без метаданных. тег.

Это должно сделать это. Теперь у вас должен быть класс метаданных, готовый для добавления ваших аннотаций. (Возможно, что использованный выше класс обслуживания домена был установлен вместе с инструментарием служб RIA WCF в VS2010. В этом нет уверенности, но если у вас его нет в списке доступных элементов, возможно, это проблема.)

Я думаю, что было бы излишним генерировать аннотации данных.

Вместо этого я бы предложил написать связанный поставщик метаданных, который просто заставит привязку и проверку модели MVC просматривать правильные метаданные для ваших типов, не требуя аннотаций данных вообще (или дополнит любые аннотации данных, которые у вас уже могут быть).

Здесь есть пример.

Другие вопросы по тегам