asp.net-core-mvc – 为dotnet核心asp.net运行CRUD脚手架时出错
所以我正在攻击.net核心并启动了一个新的asp.net核心应用程序.我创建了一个.net核心类库,并包含了对实体框架核心的引用.我创建了一个上下文,我试图在我的asp.net核心项目中使用这个上下文.当我尝试脚手架时,我一直遇到这个错误:
出于搜索目的,这里是错误消息:
我过去曾多次使用实体框架用于其他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","Microsoft.EntityFrameworkCore.Tools": { "version": "1.0.0-preview2-final","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","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","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.我已经在数据库上运行迁移,实际上可以访问数据. 解决方法
我遇到了同样的问题.如您所发现的那样,当您将数据模型和DbContext放在Web应用程序的单独项目(类库)中时会导致此问题.我相信这是当前ASP.NET Core中的一个错误.我不知道它是否会得到修复,但我找到了一个合理的解决方法.
当您尝试在Visual Studio中添加新的脚手架项时,您将获得“添加控制器”对话框.这里的关键是不要从类库中选择DbContext作为数据上下文类.而是单击“加号”按钮在Web应用程序项目中创建(临时)新数据上下文(请参见下图).你命名它并不重要,但我称之为TempDbContext.脚手架将成功完成.如果您想构建多个模型类,请立即执行此操作;它将继续使用相同的TempDbContext. 完成脚手架操作后,从Web应用程序中删除TempDbContext,并从类库中替换正确的DbContext引用.查找以下要修复的项目: >在新的scaffolded Controller中,修复DbContext类型名称,无论它出现在何处>删除Data文件夹中的TempDbContext文件>从appsettings.json中删除TempDbContext连接字符串>从Startup.cs中的ConfigureServices方法中删除AddDbContext行 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |