#c# #entity-framework
#c# #entity-framework
Вопрос:
Я пытаюсь создать миграцию инициализации для моего простого проекта. Но я получаю следующую ошибку:
C:RiderProjectsArchitectureArchitecture>dotnet ef migrations add init
The EF Core tools version '2.1.8-servicing-32085' is older than that of the runtime '2.2.2-servicing-10034'. Update the tools for the latest features and bug fixes.
Unable to create an object of type 'DomainContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728
Что не имеет никакого значения, потому что, если мы посмотрим на мои зависимости NuGet:
более старого ядра нет.Версия Tools — это 2.2.2.
Вот мой класс контекста (возможно, проблема скрыта внутри этого класса):
public class DomainContext : DbContext
{
private readonly IConfiguration _configuration;
public DomainContext(IConfiguration configuration)
{
_configuration = configuration;
}
public DbSet<Car> Car { get; set; }
public DbSet<Company> Company { get; set; }
public DbSet<Location> Location { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(_configuration.GetConnectionString("DefaultConnection"));
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>(CompanyMapping.Config);
}
}
Кто-нибудь, пожалуйста, может предложить решение?
Редактировать
Вот .csproj
файл:
<ItemGroup>
<PackageReference Include="EntityFramework" Version="6.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.2" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
<PackageReference Include="SimpleInjector" Version="4.4.3" />
</ItemGroup>
БОЛЬШОЕ ОБНОВЛЕНИЕ
Убедитесь, что у вас есть конструктор по умолчанию для класса Context.
Ответ №1:
Взгляните на свой файл .csproj. Возможно, существует более старая версия, предназначенная для узла PackageReference.
Комментарии:
1. Сэр, я прикрепил файл. Кажется, более старой версии нет. К сожалению.
2. Хм, хорошо. Можете ли вы попробовать переустановить core Tools до последней / желаемой версии (т. Е. Консоль диспетчера пакетов: Установка-Пакет Microsoft. EntityFrameworkCore. Tools -версия 2.2.2)? Возможно, есть несоответствие под капотом, которое исправляется этим.
3. Или «dotnet добавить пакет Microsoft. EntityFrameworkCore. Tools -версия 2.2.2» если вы работаете с .NET CLI.
4. по-прежнему безуспешно. У меня есть ощущение, что, возможно, где-то версии кэшируются? Или это не так?
5. Жаль это слышать — на данный момент у меня нет никаких других предложений, но я вернусь к этому, если узнаю что-нибудь, что может вам помочь. Я не знаю о каком-либо кэшировании, связанном с этой проблемой.