scaffold-dbcontext в мульти-подпроекте .netcore 3.1 проект терпит неудачу - PullRequest
0 голосов
/ 27 февраля 2020

Я уверен, что это должен быть наивный вопрос, но у меня есть проект C#, .Netcore 3.1, который имеет два подпроекта. Оба подпроекта являются MVC приложениями, хотя одно называется «APP», а другое «API».

Этот проект существует в .Netcore 2.2 и в целом работает. Возникла конкретная проблема, и я подумал, исправит ли это попытка последней версии, поэтому я создал новую версию 3.1, переместил файлы ...

Хорошо, в версии 2.2 у меня есть папки Models в каждой подпапке проект. У каждого есть точно такие же модели. Я использовал команду Scaffold-DbContext package manager для их сборки. Было бы разумно иметь возможность выделить общие модели, но я не знаю / не знаю, как это сделать.

В версии 3.1 я посещаю первый подпроект (API) и выполняю леса и это работает. Затем я пытаюсь сделать то же самое в версии APP и получаю сообщение:

PM> Scaffold-DbContext -Connection "Server=db.my.company.com;Initial Catalog=MyDB;Integrated Security=True" -Context MyDbContext -Schemas "MySchema" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models\MySchema -Force
Build started...
Build succeeded.
Could not load assembly 'API'. Ensure it is referenced by the startup project 'APP'.

Это не то, что я ожидал. Кажется, что-то из подпроекта API просачивается в подпроект APP. Я ожидал, что леса просто соберут модели из удаленной БД и вставят полученные файлы в папку Models текущего активного проекта.

Я использовал WinGrep для поиска API в разделе APP и ничего не вижу.

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

1 Ответ

0 голосов
/ 28 февраля 2020

Так что у меня нет полного ответа, но у меня есть ответ. Скорее всего, начальные леса задали что-то в конфигурации глобального проекта, что противоречит попытке повторить ту же операцию в другом подпроекте.

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

  1. Создайте еще один подпроект и позвольте ему содержать модели, которые являются общими для проектов API и APP. Затем проекты APP и API связывают новый проект как зависимость. Я не знал, что вы могли бы сделать это.
  2. Что я выбрал, так это просто использовал модели в проекте API и просто дал проекту APP установить API в качестве зависимости.

Возможно, есть даже лучшие способы, но это то, что у меня есть в данный момент.

...