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

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

Чтобы мне не пришлось все делать самому?


person MarkKGreenway    schedule 24.02.2010    source источник
comment
Это отличная идея. Когда вы думаете об этом, создавая свои таблицы (объекты LINQ), вы уже указываете длину поля, а НЕ NULL? (обязательные) параметры для каждого отдельного поля. Следовательно, должен быть способ легко автоматически генерировать всю эту метаинформацию из структуры базы данных и перекачивать ее в DataAnnotations, которые готовы к использованию. Затем вы можете просто быстро изменить / настроить их по своему желанию.   -  person Aaron    schedule 03.01.2011
comment
Есть группа людей, которые пытаются это сделать: (я не аффилирован) ef4templates.codeplex.com   -  person MarkKGreenway    schedule 25.01.2011


Ответы (2)


Я думаю, что создание аннотаций к данным было бы излишним.

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

Вот пример.

person Craig Stuntz    schedule 03.03.2010

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

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

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

person Rick Arthur    schedule 20.03.2011
comment
У меня не было опции класса обслуживания домена даже после установки набора инструментов WCF RIA Services из microsoft.com/en-us/download/details.aspx?id=26939 - person IsmailS; 01.05.2012