Генерация аннотаций данных из сгенерированных классов
У меня есть объект 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.
- Скомпилируйте ваш проект. Это важно, если вы только что создали свою модель Entity Framework.
- Щелкните правой кнопкой мыши по вашему проекту. Нажмите Добавить / Новый элемент.
- Выберите "Класс обслуживания домена" в качестве типа. Нажмите Добавить.
- Выберите вашу модель в раскрывающемся списке.
- В списке объектов выберите все объекты, для которых вы хотите аннотации данных.
- Установите флажок "Создать связанные классы для метаданных". Нажмите ОК.
- Вы получите два сгенерированных класса. Просто удалите тот, без метаданных. тег.
Это должно сделать это. Теперь у вас должен быть класс метаданных, готовый для добавления ваших аннотаций. (Возможно, что использованный выше класс обслуживания домена был установлен вместе с инструментарием служб RIA WCF в VS2010. В этом нет уверенности, но если у вас его нет в списке доступных элементов, возможно, это проблема.)
Я думаю, что было бы излишним генерировать аннотации данных.
Вместо этого я бы предложил написать связанный поставщик метаданных, который просто заставит привязку и проверку модели MVC просматривать правильные метаданные для ваших типов, не требуя аннотаций данных вообще (или дополнит любые аннотации данных, которые у вас уже могут быть).