Другая модель EDMX создается при запуске - PullRequest
0 голосов
/ 14 января 2020

У меня есть сторонний проект (например, DataProject) с определенным контекстом данных EF, а также файлы EDMX.
У меня также есть свой собственный проект (например, MyProject), который ссылается на DataProject, поэтому я могу использовать его контекст данных.

Когда я ссылаюсь на MyProject непосредственно на DataProject внутри решения, все работает хорошо. Файлы EDMX в MyProject / bin / Debug / EDMX точно такие же, как в DataProject / EDMX /.

Но мне нужно, чтобы MyProject использовал DataProject в качестве пакета NuGet. Поэтому я добавляю его как ссылку на NuGet, и пока он добавляется, я замечаю, что папка EDMX появляется в основной папке MyProject. Файлы EDMX в этой папке такие же, как в DataProject / EDMX. Все идет нормально.

Но когда я строю и запускаю MyProject, он создает MyProject / bin / Debug / EDMX с файлами другой версии, чем в любой из вышеперечисленных, и я не могу запустить datacontext из-за ошибки «Текущая модель больше не соответствует модели, использованной для предварительной генерации видов отображения ...». Я не уверен, почему это происходит - это несовпадение контекста и файлов EDMX или что-то еще. Я просто знаю, что если я ссылаюсь на MyProject непосредственно на DataProject в решении, то все работает хорошо.

  1. Почему MyProject создает разные файлы EDMX, когда я ссылаюсь на DataProject как пакет NuGet? Почему он создает те же файлы при обращении непосредственно к DataProject?
  2. Есть ли способ игнорировать вышеуказанную ошибку?
  3. Есть ли способ принудительно указать контекст EF, используя файл c EDMX?
  4. Есть ли файл / config где я должен проверить какие-либо настройки?
  5. Любые другие варианты?

Я знаю, что проблема в общих чертах, но я был бы признателен за любую помощь в направлении движения.

1 Ответ

0 голосов
/ 14 января 2020

Хорошо, нашел причину. Файлы Edmx, сгенерированные для схемы, устарели, но соответствуют схеме базы данных. Когда я ссылался непосредственно на DataProject, файлы EDMX копируются в / bin / Debug / Edmx как есть, поскольку они установлены как «Содержимое», «Копировать, если новее».
Когда я ссылаюсь на DataProject через NuGet, файлы в MyProject / Edmx автоматически устанавливаются как «Emtityeploy», «DoNotCopy» - поэтому они никогда не копируются в / bin / Debug, вместо этого новые файлы Edmx генерируются при сборке. Эти файлы Edmx соответствуют модели EF, но они слишком новы для базы данных, которая соответствует исходным файлам Edmx.

...