Я только что настроил новые проекты, Пегас (мое основное веб-приложение) и ПегасСущности (мои объекты базы данных).
Мой стартовый код Пегас включает следующее.
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(
builder.Configuration.GetConnectionString(connectionString),
builder => builder.MigrationsAssembly("PegasusEntities"));
});
Если я установлю Пегас в качестве проекта по умолчанию в консоли диспетчера пакетов и попытаюсь добавить миграцию, я получу сообщение об ошибке.
PM> add-migration CreateDatabase
Multiple startup projects set.
Using project 'Pegasus' as the startup project.
Build started...
Build succeeded.
Your target project 'Pegasus' doesn't match your migrations assembly 'PegasusEntities'. Either change your target project or change your migrations assembly.
Change your migrations assembly by using DbContextOptionsBuilder. E.g. options.UseSqlServer(connection, b => b.MigrationsAssembly("Pegasus")). By default, the migrations assembly is the assembly containing the DbContext.
Change your target project to the migrations project by using the Package Manager Console's Default project drop-down list, or by executing "dotnet ef" from the directory containing the migrations project.
Я не понимаю проблемы. В чем проекты «не совпадают»? И почему он просит меня установить сборку миграции на Пегас? Я делаю то же самое в другом проекте, и он работает нормально.
Может кто-нибудь объяснить, почему это не работает?
Хотя я делаю то же самое в другом проекте, и он работает нормально, я попытался установить проект по умолчанию в консоли диспетчера пакетов на ПегасСущности. Когда я это делаю, я получаю совершенно другую ошибку.
PM> add-migration CreateDatabase
Multiple startup projects set.
Using project 'PegasusEntities' as the startup project.
Build started...
Build succeeded.
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '2.0.0' (x64) was not found.
- The following frameworks were found:
5.0.12 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
5.0.16 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
6.0.4 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=2.0.0&arch=x64&rid=win10-x64
Это не имеет смысла для меня. Все проекты нацелены на net6.0. Почему он ищет версию 2 Microsoft.NETCore.App? Когда я открываю предложенную ссылку, я получаю страницу с надписью Срок действия этого выпуска истек, то есть он больше не поддерживается. Мы рекомендуем перейти на поддерживаемый выпуск, например 7.0 Runtime..





У меня была такая же проблема только вчера.
Сообщение об ошибке вводит в заблуждение, если не просто неверно.
Исправление состоит в том, чтобы установить для запуска отладочного проекта тот, который создает экземпляр DbContext, сохраняя при этом проект с объектами, выбранными в консоли диспетчера пакетов.
Да, я мог бы поклясться, что это сработало раньше, если бы я выбрал стартовый проект в диспетчере пакетов. Во всяком случае, сейчас вроде работает. Я понятия не имею, о чем были ссылки на 2.0.0. Спасибо.