Ошибка EF 7.NET Core

Я создал новый проект .NET Core с командой dotnet new -t lib. Это библиотека классов для моего EF Context. Это мой project.json:

    {
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {},
  "frameworks": {
    "netstandard1.6": {
      "dependencies": {
        "NETStandard.Library": "1.6.0",
        "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
        "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
      }
    }
  }
}

Когда я запускаю команду dotnet restore, я получаю эту ошибку:

error: Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final supports:

Как я могу использовать EF Code First с netstandard1.6?

Ответ 1

В соответствии с этим, "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" должен быть зарегистрирован в разделе инструментов в project.json:

{
"version": "1.0.0-*",
"description": "Class Library",
"frameworks": {
  "netstandard1.6": {
   "imports": [
     "dnxcore50"
   ]
 }
},

 "dependencies": {
 "NETStandard.Library": "1.6.0",
 "Microsoft.EntityFrameworkCore": "1.0.0",
 "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0"
},
"tools": {
  "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
 }
}

Также рекомендуется использовать imports, потому что некоторые из зависимостей EF Cores по-прежнему не поддерживают .NETStandard, но в вашем случае я проверил и он работает даже без импорта.

Что касается комментария Johan B, в котором говорится, что инструменты ef нельзя использовать с библиотеками классов на данный момент, это частично устраняется с помощью --startup-project обходного пути, например: dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb, больше информации: Параметрировать каталоги, используемые dotnet-ef.