Проверка ASP.NET MVC 2: тип метаданных нельзя добавить в стандартные классы POCO CLR — какая альтернатива?

Я использую Entity Framework и создаю свои классы POCO через T4 - эти классы наследуются из ничего и очень просты и просты (создан с помощью шаблона в сравнении с 2010)

Я попытался использовать атрибут метаданных, чтобы создать класс друзей, но когда я это сделал, я больше не мог видеть свои свойства... если бы я удалил атрибут! свойства появились.

Во всяком случае, при более глубоком поиске я нашел это заявление от Microsoft.

The associated class must be used with EDM or LINQ-to-SQL models because CLR 
types cannot mark existing properties with new attributes. If you are working with CLR
objects directly, sometimes referred to as Plain Old CLR Object (POCO) types, you can
apply the attributes directly to the model

Получается, что не работает?? В любом случае, мне очень сложно вставить аннотацию данных в саму МОДЕЛЬ, потому что она создана с помощью T4, поэтому, если я отредактирую ее, а затем повторно запущу инструмент, он удалит все мои изменения.

Кому-нибудь удалось заставить это работать?

Я действительно борюсь.


person Martin    schedule 04.11.2010    source источник
comment
Что я делаю, так это использую шаблон, а затем копирую POCO в отдельный проект. Когда мне нужно обновить POCO, я снова генерирую и объединяю изменения. Нет необходимости хранить POCO в файле TT.   -  person RPM1984    schedule 04.11.2010
comment
Спасибо! из интереса как вы сравниваете (или объединяете) изменения?   -  person Martin    schedule 04.11.2010


Ответы (1)


Существует довольно сильный консенсус вокруг SO и блогосферы MVC о том, что вы не должны аннотировать свои бизнес-классы/классы предметной области с атрибутами. Мало того, что весь ваш стек MVC становится зависимым от ваших классов бизнеса/базы данных, вы быстро столкнетесь с несколькими контекстными сценариями (одна и та же модель, разные правила проверки), которые невозможно проверить с помощью одной модели.

Используйте отдельные модели просмотра для своих экранов, аннотируйте их.


На основании вашего комментария: «Аннотация данных на самой МОДЕЛИ, потому что она создана через T4, следовательно»

Я пытаюсь сказать, что поместите свои аннотации данных в свои модели просмотра, оставьте свои модели POCO в покое.

person John Farrell    schedule 04.11.2010
comment
Да, я делаю это, я использую automapper для сопоставления моей модели с моей моделью просмотра. - person Martin; 04.11.2010