EF Core 2.0 Настройка контекста БД в первый раз

У меня есть новый проект asp.net core 2.0, и я пытаюсь сохранить свой контекст db в db посредством миграции, теперь у меня есть зависимости, установленные через NuGet, которые должны быть там.

Это мой DBContext

public  class SolitudeDBContext : DbContext
{
    public SolitudeDBContext(DbContextOptions options) : base(options) { }
    public virtual DbSet<OrderHeader> OrderHeader { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        modelBuilder.HasDefaultSchema(schema: SchemaName.Portal);

        base.OnModelCreating(modelBuilder);
    }

    public override int SaveChanges()
    {        
        return base.SaveChanges();
    }
}

Мои настройки приложений, в которых я храню свое соединение по умолчанию.

 {
  "ConnectionStrings": {
    "DefaultConnection": "Server=DESKTOP-JHIMUM4\\SQLEXPRESS2014;Database=solitude;Trusted_Connection=True;MultipleActiveResultSets=true"
  },

"Logging": {
  "IncludeScopes": false,
  "LogLevel": {
    "Default": "Warning"
  }
}
}

Я использовал

PM> dotnet ef migrations добавить firstDatabase

Но возникает следующая ошибка, хотя вы можете видеть, что ссылки установлены также в моделях, у меня также исправлена ​​группа элементов. dotnet: исполняемый файл не найден соответствующей команде "dotnet-ef" В строке: 1 символ: 1 + dotnet ef migrations add firstDatabase + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (Нет исполняемого файла f ... и «dotnet-ef»: String) [], RemoteException + FullyQualifiedErrorId: NativeCommandError

Мой файл проекта

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Models\products\" />
    <Folder Include="Models\stock\" />
  </ItemGroup>

</Project>

Проекты после второго редактирования:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>


  <ItemGroup>
    <Folder Include="Models\products\" />
    <Folder Include="Models\stock\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>

person csharpdudeni77    schedule 07.10.2017    source источник
comment
Вы находитесь в консоли диспетчера пакетов, dotned - это инструкция в командном окне. Или следуйте этому пошаговому руководству.   -  person Gert Arnold    schedule 08.10.2017
comment
@GertArnold, это руководство предназначено для ядра .net Я использую ядро ​​.net 2, есть различия   -  person csharpdudeni77    schedule 08.10.2017


Ответы (1)


Вам нужно добавить Microsoft.EntityFrameworkCore.Tools.DotNet как DotNetCliToolReference вместо ссылки на пакет. Это сделает доступными dotnet-ef команды:

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
person poke    schedule 07.10.2017
comment
Я все еще получаю указанную выше ошибку - person csharpdudeni77; 08.10.2017
comment
Я добавил измененный файл и отредактировал выше, я все еще получаю ту же ошибку - person csharpdudeni77; 08.10.2017
comment
Вы сначала запускали dotnet restore? - person poke; 08.10.2017