Entity Framework 4.1 - схожу с ума от количества вариантов - PullRequest
0 голосов
/ 25 марта 2012

Я создал сайт в MVC3, используя EF 4.0, используя шаблон Repository. Все шло хорошо, но я начинаю сталкиваться со многими ошибками «Невозможно определить отношения между двумя объектами, потому что они привязаны к разным объектам ObjectContext». Кажется, что мой уровень репозитория смешивает контексты, поэтому я подумал, что может быть проще начать новый проект EF4.1.

Сначала я посмотрел на Шаблон репозитория + Единица работы, но наткнулся на несколько потоков, в которых говорилось, что это не нужно для EF4.1. Я сталкивался с этим потоком, говоря: «DbContext - это реализация шаблона единицы работы, а IDbSet - реализация шаблона репозитория». Я подумал, может быть, тогда я мог бы просто использовать это. Однако при дальнейшей проверке кажется, что DbContext использует подход Code First, который, насколько я могу судить, отбросит и снова создаст базу данных при изменении POCO. Мне нужно сохранить данные в моей базе данных, так что, насколько я могу судить, эта опция отсутствует.

Моя голова сейчас кружится с опциями EF. Нужен ли шаблон репозитория с EF4.1? Предназначен ли DbContext для работы с базами данных, которые уже полны данных? Есть ли лучший способ управления контекстами сущностей, которые не включают их?

Любой толчок в правильном направлении был бы великолепен = /

1 Ответ

1 голос
/ 25 марта 2012

Несколько комментариев.Для получения дополнительной информации я рекомендую провести некоторые базовые исследования с использованием поисковой системы.

... Я начинаю сталкиваться с множеством вопросов: «Отношения между двумя объектами не могут быть определены, поскольку они прикрепленыв разные объекты ObjectContext "ошибки.Кажется, что мой уровень репозитория смешивает контексты, поэтому я подумал, что может быть проще начать новый проект EF4.1.

Если у вас есть эта ошибка, вы сделали что-то не так.EF 4.1 не защитит вас от повторения той же ошибки, потому что вы также не можете изменить отношения между объектами, прикрепленными к различным DbContext s.Вам просто нужно проанализировать и отладить свой код и найти источник проблемы.

... этот поток говорит: "DbContext - это реализация шаблона единицы работы, а IDbSet - реализация шаблона хранилища".,Я подумал, может тогда я мог бы просто использовать это ...

ObjectContext и ObjectSet<T> также является реализацией этих шаблонов.Это не повод менять версию Entity Framework.

После дальнейшей проверки, хотя кажется, что DbContext использует подход Code First ...

Вы также можете использоватьПодход «База данных первый и модель первый» с DbContext.

... который, насколько я могу судить, упадет и снова создаст базу данных при изменении POCO.Мне нужно сохранить данные в моей базе данных, так что, насколько я могу судить, эта опция отсутствует.

Вы можете отключить эту функцию.Кроме того, EF 4.3 имеет функцию миграции, которая помогает обновлять и развивать существующую схему базы данных.

Требуется ли шаблон репозитория с EF4.1?

Нет.Это также не нужно для ObjectContext.Если быть точным, вам не нужно писать собственный (абстрактный) репозиторий top of EF, потому что EF уже является реализацией этого шаблона.

Является ли DbContext для работы с базами данных, которые ужеполных данных?

Да.Дополнительная функция для создания базы данных из кода (Code-First) - это, главным образом, инструмент для повышения производительности на этапе разработки вашего приложения, который должен быть отключен на производстве.

...