Asp.net core mvc 为dotnet core asp.net运行CRUD scaffolding时出错

Asp.net core mvc 为dotnet core asp.net运行CRUD scaffolding时出错,asp.net-core-mvc,entity-framework-core,.net-core,Asp.net Core Mvc,Entity Framework Core,.net Core,所以我尝试了一下.net核心,并启动了一个新的asp.net核心应用程序。我创建了一个.net核心类库,并包含了对实体框架核心的引用。我已经创建了一个上下文,我正在尝试在我的asp.net核心项目中使用该上下文构建框架。我在尝试搭建脚手架时不断遇到以下错误: 出于搜索目的,以下是错误消息: 运行所选代码生成器时出错: '创建/修改DbContext时出错,成功编译新程序集后没有返回类型。' 过去,我曾多次在其他asp.net项目中使用entity framework,在尝试从应用程序项目外部抽

所以我尝试了一下.net核心,并启动了一个新的asp.net核心应用程序。我创建了一个.net核心类库,并包含了对实体框架核心的引用。我已经创建了一个上下文,我正在尝试在我的asp.net核心项目中使用该上下文构建框架。我在尝试搭建脚手架时不断遇到以下错误:

出于搜索目的,以下是错误消息:

运行所选代码生成器时出错:

'创建/修改DbContext时出错,成功编译新程序集后没有返回类型。'

过去,我曾多次在其他asp.net项目中使用entity framework,在尝试从应用程序项目外部抽象出dbContext时,我总是遇到问题。然而,这一次我想不出解决办法

有人看到过这个错误吗?我可以提供更多关于我的project.json文件的详细信息,但是我想我应该先看看是否有人遇到过这个问题,而不是在这篇文章中粘贴一个大的副本

当前正在我的web项目上运行:

{
  "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。我已经在数据库上运行了迁移,实际上可以访问数据。

我也遇到了同样的问题。正如您所发现的,当您的数据模型和DbContext与web应用程序在一个单独的项目(类库)中时,就会出现这个问题。我相信这是当前ASP.NET核心中的一个bug。我不知道它是否会被修复,但我已经找到了一个合理的解决办法

当您尝试在VisualStudio中添加新的脚手架项目时,会出现“添加控制器”对话框。这里的关键是不要从类库中选择DbContext作为数据上下文类。相反,单击“加号”按钮在web应用程序项目中创建(临时)新数据上下文(请参见下图)。不管你叫什么名字,我都叫它TempDbContext。脚手架将成功完成。如果您想构建多个模型类,现在就开始吧;它将继续使用相同的TempDbContext

完成搭建后,从web应用程序中删除TempDbContext,并替换为类库中正确的DbContext引用。查找以下要修复的项目:

  • 在新的脚手架控制器中,修复出现的DbContext类型名称
  • 删除数据文件夹中的TempDbContext文件
  • 从appsettings.json中删除TempDbContext连接字符串
  • 从Startup.cs中的ConfigureServices方法中删除AddDbContext行

您可以右键单击控制器文件夹=>添加新项目=>Webapi控制器/etc


这里解决了具有读/写操作的控制器的问题

您必须显示更新的
project.json
文件,以包含两个project.json文件。我在web应用程序project.json中没有看到对类库的引用。您删除了吗?此错误仍然发生在刚刚发布的Visual Studio 2017中。