我创建了一个asp.net核心RC2(.NET 4.61框架)项目。
然后我创建了另一个带有Entity Framework引用的“DataProvider”nuget类库(.NET core),并将framework
设置中的project.json
更改为"net461":{}
。
之所以我没有创建一个通用的c#类库,是因为它没有project.json,但是我需要设置这样的东西:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools": {
"type": "build",
"version": "1.0.0-preview1-final"
}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": {
"imports": [ "portable-net451+win8" ],
"version": "1.0.0-preview1-final"
}
},
"frameworks": {
"net461": {
"buildOptions": {
"emitEntryPoint": true
}
}
}
}
DataProvider项目有我的DbContext类。
因此,我转到DataProvider目录的命令行并执行:
dotnet ef migrations add Init
然后我收到此错误:
This preview of Entity Framework tools does not support targeting class library projects in ASP.NET Core and .NET Core applications. See http://go.microsoft.com/fwlink/?LinkId=798221 for details and workarounds.
我不想将我的DbContext放入asp.net核心rc2项目!!!
我点击该链接以查找有关该变通办法的更多信息,但实际上没有任何帮助,直到我找到该链接:
https://github.com/aspnet/EntityFramework.Docs/blob/master/docs/cli/dotnet.rst
由于我之前遇到此错误,以下是2个解决方法:
解决方法1 不工作(“要使项目成为.NET Core App,请将”netcoreapp1.0“框架添加到project.json中使用下面示例中的其他设置:“)
这是我改变project.json
{
"frameworks": {
"netcoreapp1.0": {
"imports": [ "portable-net451+win8" ],
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
},
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools": {
"type": "build",
"version": "1.0.0-preview1-final"
}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": {
"imports": [ "portable-net451+win8" ],
"version": "1.0.0-preview1-final"
}
}
}
}
}
=>因为在安装了很多nugets并重建之后我还要添加一个我添加的program.cs等等。然后我在CMD上重新运行“dotnet ef migrations add Init”,收到此错误:No executable found matching command "dotnet-ef"
解决方法2 不工作:(“要创建桌面.NET应用,请确保将项目目标设为”net451“或更新版本(例如”net461“)也有效)并确保构建选项“emitEntryPoint”设置为true。“)
=>因为我得到编译异常,所以program.cs没有Main方法。
好的,我有一个类库,它从来没有program.cs ...然后我用静态Main方法添加了program.cs。现在项目编译,但是当我重新运行CMD上的“dotnet ef migrations add Init”时,我得到了与之前相同的错误!!!
如何使“dotnet ef migrations add Init”的执行工作?
答案 0 :(得分:2)
您看到的CMD错误是错误(请参阅#4797,#1858,#4555,#{{3 }})。
我通过重新启动计算机(Fancy,我知道)在迁移到RC2期间设法克服了这个错误。它似乎固定在内部馈送中,但#1858中也有PR。
答案 1 :(得分:0)
您可以尝试此解决方法 - Dotnet EF Migrations for ASP.NET Core