无法获取DbContext的反射类型

时间:2017-11-01 17:44:14

标签: c# entity-framework asp.net-core asp.net-core-2.0

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

  

无法获取DbContext的反射类型:

     

BE.Data.ApplicationDbContext at   Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b__6_0()   在   Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(字符串[]   args)at   Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(字符串[]   args)at   Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(字符串[]   参数)

这突然发生了,一个运行相同代码的同事没有遇到这个问题,我曾尝试过清理构建,删除每个项目中的bin和obj文件夹,删除db但仍然无法工作它会,感谢任何帮助。

型号:

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

6 个答案:

答案 0 :(得分:8)

当我使用新的C#7功能(expression bodied members and Throw expressions)时,我也遇到了这个问题,但是在C#6中使用它代替我的代码,它没有给我这个错误了。尝试在没有任何C#7新功能的情况下测试您的项目,可能它应该可以正常工作。我不确定是什么原因,但我认为脚手架所依赖的Roslyn软件包还不支持C#7的新功能。

作为让脚手架与C#7一起使用的解决方法,我认为你可以通过以下方式实现:

  1. 安装(或更新)NuGet包Microsoft.CodeAnalysis.CSharp.Workspaces版本2.0.0或更高版本
  2. 然后重新尝试搭建脚手架

答案 1 :(得分:1)

当我通过Scaffold-DbContext命令生成EF模型时出现此错误,并以警告结束。然后首先我纠正了Scaffold-DbContext的警告,然后脚手架剃须刀项目工作正常。

答案 2 :(得分:1)

尝试使用scaffold-dbContext时存在歧义。 我再次尝试搭建支架,并且在dbcontext上出现了错误。这是一个术语的模棱两可的用法。 解决了错误清单上的这种歧义。解决了这个问题。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我正在使用Visual Studio 2019和.Net Core 3.1

我刚刚意识到我的代码中曾经使用过unsafe { }块。我为临时代码注释了不安全的代码,可以再次使用脚手架。

答案 5 :(得分:0)

我遇到了这个问题。我到数据库的连接字符串包含特定于语言的符号(拉脱维亚语),但我花了 2 个小时才弄明白。我通过将我的项目文件夹和数据库放在一个只包含 ASCII 符号的目录中来修复它。

也许对某人有用。