C# 无法获取DbContext的反射类型

C# 无法获取DbContext的反射类型,c#,entity-framework,asp.net-core,asp.net-core-2.0,C#,Entity Framework,Asp.net Core,Asp.net Core 2.0,在ASP Core 2.0 VS 2017中搭建控制器时,我得到以下信息: 无法获取DbContext的反射类型: BE.Data.ApplicationDbContext位于 Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b_u6_0() 在 Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(字符串[]) args)在 Microsoft.V

在ASP Core 2.0 VS 2017中搭建控制器时,我得到以下信息:

无法获取DbContext的反射类型:

BE.Data.ApplicationDbContext位于 Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b_u6_0() 在 Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(字符串[]) args)在 Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(字符串[]) args)在 Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(字符串[]) args)

这一切突然发生了,一位同事运行相同的代码却没有遇到这个问题,我尝试了干净的构建,删除了每个项目中的bin和obj文件夹,删除了db,但我似乎仍然无法解决这个问题,如果有任何帮助,我将不胜感激

型号:

public class SettingType : BaseModel
{
    public int SettingTypeId { get; set; }
    public string SettingTypeDescription { get; set; }
    public string SystemCode { get; set; }
}

当我使用新的C#7特性()时,我也遇到了这个问题,但通过用C#6中的等效代码替换我的代码,它不再给我这个错误。尝试在没有任何C#7新特性的情况下测试您的项目,它可能会正常工作。我不确定原因是什么,但我认为脚手架所依赖的Roslyn包还不支持C#7的新特性

作为让脚手架与C#7协同工作的一种解决方法,我认为您可以通过执行以下操作:

  • 安装(或更新)NuGet软件包
    Microsoft.CodeAnalysis.CSharp.Workspace
    2.0.0版或更高版本
  • 然后再次尝试搭建脚手架

  • 当我通过Scaffold DbContext命令生成EF模型时,我得到了这个错误,这个错误以警告结束。然后我首先更正Scaffold DbContext的警告,然后Scaffold razor项可以正常工作。

    尝试Scaffold DbContext时存在歧义。 我再次尝试构建脚手架,dbcontext上出现了错误。这是一个术语的模糊用法。
    在错误列表中解决此歧义。它解决了问题。

    这件事发生在我身上,我只需要在搭建脚手架之后再建造项目。(是的,这是一件基本的事情,但我忘记了哈哈)

    我正在使用visual studio 2019和.Net Core 3.1


    我刚刚意识到在我的代码中的某个地方我使用了
    safe{}
    block。我对临时的不安全代码进行了注释,我可以再次使用脚手架。

    我对此有问题。我与数据库的连接字符串包含特定于语言的符号(拉脱维亚语),我两个小时都无法理解。我通过将我的项目文件夹和数据库放在一个只包含ASCII符号的目录中来修复它


    也许对某些人有用。

    您在项目中使用了C#7新功能吗?@S.Akbari:为什么?我们还没有开始使用它们。这会给EF脚手架带来问题吗?@EricJ。我在我的一个项目中遇到了类似的问题,通过替换C#7的一个新特性,问题得到了解决!您是否将VS升级到v15.3或更高版本?@S.Akbari是。7.1,我正在使用公共静态异步任务主(字符串[]args)功能。VS2019上也存在同样的问题。为我工作。同一版本VS2019 16.6.0预览版2.1。在VS16.8.2下的一个.NET5.0项目中,同样的事情也发生在我身上,这就解决了这个问题。删除expression Body成员不起作用,我必须安装CodeAnalysis.CSharp.workspace(版本3.8)。我应该尝试返回expression Body成员,看看它是否仍然有效。我添加了expression Body成员,脚手架仍然有效。为我工作,安装了最新的Microsoft.CodeAnalysis.CSharp.Workspace nugetPaldies:)Dėkoju,aūIū