#entity-framework-core #ef-core-6.0
#сущность-структура-ядро #ef-core-6.0
Вопрос:
После обновления существующего проекта с EF Core 5 до EF Core 6 некоторые настройки больше не будут компилироваться, в частности настройки для классов CSharpMigrationsGenerator и SqlServerMigrationsSqlGenerator. Хотя пространства имен указаны правильно, Visual Studio подчеркивает ссылки на них и, похоже, не понимает, о чем я говорю. Глядя на исходный код EF Core, классы находятся там, где они должны быть, так почему я не могу увидеть их в своем проекте?
Ответ №1:
Это побочный эффект обновления NuGet ссылки на пакет. В Microsoft.EntityFrameworkCore.Миграции.Пространство имен Design происходит от Microsoft.Пакет EntityFrameworkCore.Design, который хочет установить себя как анализатор.
После обновления ссылки ваш файл csproj будет выглядеть следующим образом:
lt;PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0"gt; lt;PrivateAssetsgt;alllt;/PrivateAssetsgt; lt;IncludeAssetsgt;runtime; build; native; contentfiles; analyzers; buildtransitivelt;/IncludeAssetsgt; lt;/PackageReferencegt;
Это неверно. Вот как вы ссылаетесь на анализатор. Это делает код в этом пакете доступным для Visual Studio, но не для вашего кода. То, что вам нужно, — это обычная старая ссылка на пакет, подобная этой:
lt;PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.0" /gt;
Исправление вашего файла csproj снова сделает классы доступными для вашего кода.