Генерация аннотаций данных из сгенерированных классов - PullRequest
2 голосов
/ 25 февраля 2010

У меня есть объект 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 ]

0 голосов
/ 20 марта 2011

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

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

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

0 голосов
/ 03 марта 2010

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

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

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

...