生成 <DbContext> 时出错

Posted

技术标签:

【中文标题】生成 <DbContext> 时出错【英文标题】:Error generating <DbContext> 【发布时间】:2012-04-04 08:16:54 【问题描述】:

我正在 MVC4 Beta 上尝试一些东西。项目在 VS11,EF 5.0-Beta 中,使用 Code First 方法。 为模型类创建了具有单个 IDbSet 属性的简单模型 poco 和 DbContext 派生类。与 LocalDb 的连接字符串。

我注意到,当上下文的实体集属性是 IDbSet 类型时,当我尝试使用“具有读/写操作和视图的控制器,使用实体框架”脚手架模板创建新控制器时,我会从 VS 收到消息: “生成 'MyProject.MyNamespace.MyContext' 时出错。请尝试重建您的项目。” 即使是清洁解决方案并重新构建也无济于事。

如果我将实体集属性更改为类型 DbSet,则控制器脚手架成功。 这是一个错误还是可以预料的?

兄弟, 劳里

【问题讨论】:

【参考方案1】:

这不是你不能实例化接口实例的错误。 IDbSet 前面的 I 表示类型为接口(按约定)。因此,您试图创建该接口的实例。相反,您需要使用 DBSet 来处理它,它是 IDBSet 接口的实现。我希望这可以澄清您的问题。

【讨论】:

好的,但是在使用 DbSet 属性搭建脚手架之后,我可以将它们更改为 IDbSet 并且应用程序构建和工作。它是 .Net 类型解析的结果还是这种性质的结果? 据我所知,正确的语法是使用 DbSet 而不是 IDbBSet

以上是关于生成 <DbContext> 时出错的主要内容,如果未能解决你的问题,请参考以下文章

DbContext运行时动态附加上一个dbset

为啥 EF 6.4 生成的 SQL 出错了?

将 JSON 数组反序列化为 List<T> C# 时出错

准备 CoreML 模型时出错:CoreML 代码生成不支持“<something>”

纳闷的EF异常:在提供程序连接上启动事务时出错

由于模型关系而添加控制器时出错