在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; }
}
答案 0 :(得分:8)
当我使用新的C#7功能(expression bodied members and Throw expressions)时,我也遇到了这个问题,但是在C#6中使用它代替我的代码,它没有给我这个错误了。尝试在没有任何C#7新功能的情况下测试您的项目,可能它应该可以正常工作。我不确定是什么原因,但我认为脚手架所依赖的Roslyn软件包还不支持C#7的新功能。
作为让脚手架与C#7一起使用的解决方法,我认为你可以通过以下方式实现:
Microsoft.CodeAnalysis.CSharp.Workspaces
版本2.0.0或更高版本答案 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 符号的目录中来修复它。
也许对某人有用。