.NET 4.5中是否弃用了ObjectContext?

时间:2012-11-28 16:38:43

标签: .net entity-framework

我已经使用ObjectContexts很长一段时间了。现在我已经安装了VS 2012,令我惊讶的是,实体数据模型没有创建ObjectContextsEntityObjects代替DbContexts和{{1}的代码生成项的选项}}

现在已弃用吗?我看到POCOs类仍然可用,但我无法将其用作EDMX的输出。

3 个答案:

答案 0 :(得分:19)

不推荐使用ObjectContext。实际上DbContext只是ObjectContext上的一个层。 DbContext API具有更好/更小的API,更易于使用。 POCO实体也更清洁。这是改变代码生成的原因。如果您仍想使用ObjectContext和基于EntityObject的实体,请删除* .edmx文件下的* .tt文件。双击edmx文件以在设计器中打开它。单击设计器表面。在属性中将“代码生成策略”从“无”更改为“默认”。

修改

VS2013随附的EF6设计器中的行为发生了一些变化(可供VS2012下载)。如果您使用EF5,则有两个选项:'T4'和'LegacyObjectContext'。如果您使用的是EF6,则会禁用下拉列表。如果您想在EF6应用程序中使用ObjectContext,您需要使用Entity Object generator for EF6(注意此链接仅指向模板的一个版本,但实际上有几个版本取决于您需要的内容 - C#与VB。 NET,WebSite非WebSite - here是列表)。您可以在EF6工具here中找到有关更改的更多详细信息。

答案 1 :(得分:3)

Microsoft建议EF5.x DbContext Generator用于新项目。它是VS2012中的默认模板。 PreVS2012用户可以使用ExtensionManager(搜索EF5.x)或下载here找到它。

您当然可以使用可以找到hereEntityObjects模板生成ObjectContextEF4.x EntityObject Generator

如何设置事项描述here

答案 2 :(得分:2)

我不确定如何使用ObjectContext生成EDMX,但不会弃用它。使用DbContext是因为99%的用户不需要ObjectContext的功能。

您可以从DbContext获取对ObjectContext的引用,但是:((IObjectContextAdapter)dbContext).ObjectContext