Asp.net core “如何修复”;找不到匹配命令的可执行文件“;dotnet ef“&引用;使用新的csproj文件
我想使用SQLite和实体框架核心。我将遵循以下官方教程: 它表示要修改project.json,如下所示: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
{
"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上)