Asp.net core “如何修复”;找不到匹配命令的可执行文件“;dotnet ef“&引用;使用新的csproj文件

Asp.net core “如何修复”;找不到匹配命令的可执行文件“;dotnet ef“&引用;使用新的csproj文件,asp.net-core,.net-core,entity-framework-core,Asp.net Core,.net Core,Entity Framework Core,我想使用SQLite和实体框架核心。我将遵循以下官方教程: 它表示要修改project.json,如下所示: { "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": { "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0", "Microsoft

我想使用SQLite和实体框架核心。我将遵循以下官方教程:

它表示要修改project.json,如下所示:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0",
    "Microsoft.EntityFrameworkCore.Design": {
      "version": "1.1.0",
      "type": "build"
    }
  },
  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4"
  }
}
我已经安装了VS 2017 RC,Net Core现在使用csproj文件而不是project.json

我将csproj修改为
Include=“Microsoft.EntityFrameworkCore.Tools.DotNet”Version=“1.1.0-preview4-final”
,但当我尝试命令
DotNet ef migrations add MyFirstMigration
时,我得到以下错误:

“未找到与命令“dotnet ef”匹配的可执行文件”


我如何用新的csproj解决这个问题

VS2017将于2017年3月7日正式发布。该文件涉及VS2015,尚未更新,以反映VS2017的最新变化。这样修改csproject可以解决以下问题:

<ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="1.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.0" />
  </ItemGroup>

  <ItemGroup>
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version = "1.1.0-preview4-final"/>
  </ItemGroup>
我得到了以下错误: 在“TContext”上找不到无参数构造函数。请将无参数构造函数添加到“TContext”中,或在与“TContext”相同的程序集中添加“IDbContextFactory”的实现。

根据文档,这是因为设计时工具试图自动查找应用程序如何创建DbContext类型的实例。如果EF找不到合适的方法初始化DbContext,则可能会遇到此错误

我非常确定我已经设置了无参数构造函数,并且可以使用以下CLI命令查看上下文:

dotnet ef migrations add MyFirstMigration
dotnet ef database dbContext list
执行迁移的唯一方法是在项目中实现接口
IDbContextFactory
。关于如何做到这一点的文档和示例基于VS 2015。在VS 2017中,
IDbContextFactory.Create()
想要一个
DBContextFactoryOptions
作为参数:

public class MyContextFactory: IDbContextFactory<MyContext>   
{
    public MyContext Create(DbContextFactoryOptions options)
    {
        var optionsBuilder = new DbContextOptionsBuilder<MyContext>();       
        optionsBuilder.UseSqlite("Filename=./mydatabase.db");

        return new MyContext(optionsBuilder.Options);        
    }
}
公共类MyContextFactory:IDbContextFactory
{
公共MyContext创建(DbContextFactoryOptions)
{
var optionsBuilder=new DbContextOptionsBuilder();
optionsBuilder.UseSqlite(“文件名=./mydatabase.db”);
返回新的MyContext(optionsBuilder.Options);
}
}

我还建议使用1.1.0版本的Microsoft.Extensions.*(或任何其他ASP.NET软件包)来对齐它们。当你说Microsoft网站上的文档过时时,可能你太难了。该文档涉及VS2015,因此这里有一个(完全准确的)project.json示例。VS2017将于2017年3月7日正式发布。然而,我的问题是:
Microsoft.EntityFrameworkCore.Tools.DotNet
工具的
1.0.0-msbuild3-final
声明是什么?如果您使用的是msbuild,是否意味着没有1.1.0工具?(我仍在VS2015上)