所以我正在攻击.net核心并启动了一个新的asp.net核心应用程序。我创建了一个.net核心类库,并包含了对实体框架核心的引用。我创建了一个上下文,我试图在我的asp.net核心项目中使用这个上下文。当我尝试脚手架时,我一直遇到这个错误:
出于搜索目的,这里是错误消息:
运行所选代码生成器时出错:
'创建/修改DbContext时出错,在成功编译新程序集后没有返回任何类型。'
我过去曾多次使用实体框架用于其他asp.net网络项目,并且在尝试在应用程序项目之外抽象出dbContext时总是遇到问题。但是,这次我无法找到解决方法。
有没有人看到过这个错误?我可以提供有关我的project.json文件的更多详细信息,但不是在这篇文章中放一个大的复制粘贴,我想我会先看看是否有人遇到过这个问题。
目前正在我的网络项目上运行:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Routing": "1.0.1",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": {
"version": "1.0.1",
"type": "build"
},
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"DBCONTEXTPROJECT: "1.0.0-*"
},
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"**/*.cshtml",
"appsettings.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
作为一个注释,我试图将我的dbContext项目配置为.netcore应用程序,以尝试使迁移工作。我得到同样的错误。我目前已将这些更改还原,现在将dbContext项目设置为.net标准。
这是我的dbContext项目设置:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"NETStandard.Library": "1.6.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netstandard1.6": {}
}
}
我想我还应该说我可以完全运行DbContext。我在数据库上运行了迁移,实际上可以访问数据。
答案 0 :(得分:0)
我遇到了同样的问题。如您所发现的那样,当您将数据模型和DbContext放在Web应用程序的单独项目(类库)中时会导致此问题。我相信这是当前ASP.NET Core中的一个错误。我不知道它是否会得到修复,但我找到了合理的解决方法。
当您尝试在Visual Studio中添加新的脚手架项时,您将获得"添加控制器"对话。这里的关键是不要从类库中选择DbContext作为数据上下文类。而是单击" plus"按钮在Web应用程序项目中创建(临时)新数据上下文(请参见下图)。你命名它并不重要,但我称它为TempDbContext。脚手架将成功完成。如果您想构建多个模型类,请立即执行此操作;它将继续使用相同的TempDbContext。
当你完成脚手架时,从Web应用程序中删除TempDbContext并用类库中的正确DbContext引用替换。寻找以下要修复的项目:
答案 1 :(得分:0)
你可以做右击控制器文件夹=>添加新项目=> Webapi控制器/等。
我的问题在这里解决了具有读/写操作的控制器