Как проверить модель EF 4.0 с сгенерированным DbContext в asp.net mvc? - PullRequest
0 голосов
/ 18 октября 2011

ОК, поэтому Я все еще хочу использовать модель схемы из EF 4.0, , но я также хочу API и гибкость EF 4.1.

Итак, в своем приложении я добавилКод генерации DbContext из моих текущих моделей EF 4.0.

Теперь мои вопросы: каковы мои варианты проверки моделей DbSet (EF 4.1) без их удаления?

DataAnnotation, кажется, не сокращает его, потому что каждый раз, когда я обновляю свою визуальную модель, она ПОЛНОСТЬЮ УДАЛЯЕТ все мои модификации.

  • Я слышал о частичных классах, но это кажется очень грязным.
  • На самом деле я не хочу выполнять проверки на моем контроллере.
  • Я хочу сделать это масштабируемым, чтобы я мог легко переносить свои классы из asp.net MVC в WPF и т. Д.

Есть ли способ сделать это?Валидационный репозиторий?Отдельный уровень проверки?Проверка внутри слоев хранилища?Примеры тоже будут оценены.

Пожалуйста, помогите мне.Спасибо:)

Ответы [ 3 ]

1 голос
/ 18 октября 2011

В моем проекте я смешиваю контексты 4.1 и 4.0. Возможно сделать медленную миграцию. Существует также расширение для обратного инженера Entity Framework 4.1, которое можно добавить в Visual Studio. (чтобы позволить вам использовать 4.1 с помощью кода, генерирующего объекты poco + отображения из существующей базы данных).

Я бы не рекомендовал создавать DbContext, который предоставляет модели, созданные в edmx начиная с 4.0. Вы также теряете преимущества наследования objectcontext / dbcontext, наследования свойств (управление версиями строк и т. Д.) И управления объектом poco (не генерируется код, поэтому вам не нужно беспокоиться о атрибуте partials + metadatatype, как в 4.0)

Ваш вопрос связан с проверкой схемы, созданной с помощью ef4.0:

Чтобы аннотации данных НЕ полностью стирались при обновлении модели, вам необходимо использовать атрибут MetadataType.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

с примером

1 голос
/ 18 октября 2011

с помощью генератора шаблонов кажется возможным выполнить одно из следующих действий:

  1. Создайте класс собеседников для каждой из ваших сущностей и определите класс собеседников в соответствии с соглашением об именах в шаблоне.
  2. Придумайте способ создания аннотаций данных, храня их в отдельном источнике или что-то в этом роде.

Или используйте отдельный слой. Если вы используете репозитории, вы можете вставить туда проверку. Я выбрал фабрику Orm Validation, которая использует правила, соответствующие сущности (статически или динамически), и фабрика выполняет свою работу (поскольку это больше соответствует принципу исключительной ответственности).

НТН.

0 голосов
/ 18 октября 2011

Я не знаю, почему MS учит программистов таким плохим практикам.Особенно использование аннотаций данных для сопоставления в EF 4.1 было действительно глупым дизайнерским решением (например, Linq-to-SQL использовал отдельные атрибуты, установленные для четкого разделения между сопоставлением и проверкой).

Аннотации данных используются для проверки данных изпользовательский ввод и пользовательский ввод относятся к представлению / контроллеру, где каждому представлению могут потребоваться разные правила проверки => если вы хотите использовать аннотации данных, эти правила принадлежат модели представления, а не сущности.

В простейших случаях, когда представление и сущность 1: 1, вы можете напрямую использовать аннотации данных, но это действительно для простейших приложений, и как только вы создадите такое простое приложение, вы, скорее всего, сможете напрямую использовать динамические данные ASP.NET.и позвольте каркасу создавать все страницы для вас на основе вашей модели сущностей.

Динамические данные ASP.NET также показывают, как применять аннотации данных для сгенерированных сущностей в классах друзей .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...