我已经使用ObjectContexts
了很长时间了。现在我已经安装了 VS 2012,令我惊讶的是,实体数据模型没有用于创建ObjectContexts
andEntityObjects
而不是DbContexts
and的代码生成项的选项POCOs
。
现在被弃用了吗?我看到ObjectContext
该类仍然可用,但我无法将它用作我的 EDMX 的输出。
我已经使用ObjectContexts
了很长时间了。现在我已经安装了 VS 2012,令我惊讶的是,实体数据模型没有用于创建ObjectContexts
andEntityObjects
而不是DbContexts
and的代码生成项的选项POCOs
。
现在被弃用了吗?我看到ObjectContext
该类仍然可用,但我无法将它用作我的 EDMX 的输出。
不推荐使用 ObjectContext。实际上 DbContext 只是 ObjectContext 之上的一层。DbContext API 具有更好/更小的 API,并且更易于使用。POCO 实体也更干净。这就是改变代码生成的原因。如果您仍想使用基于 ObjectContext 和 EntityObject 的实体,请删除 *.edmx 文件下的 *.tt 文件。双击 edmx 文件在设计器中打开它。单击设计器表面。在属性中将“代码生成策略”从“无”更改为“默认”。
编辑
该行为在 VS2013 附带的 EF6 设计器中发生了一些变化(并且可用于 VS2012 的下载)。如果您使用的是 EF5,则两个选项是:“T4”和“LegacyObjectContext”。如果您使用的是 EF6,则下拉菜单将被禁用。如果您想在 EF6 应用程序中使用 ObjectContext,您需要使用 EF6 的实体对象生成器(请注意,此链接仅指向模板的一个版本,但实际上有几个版本取决于您的需要 - C# 与 VB。 NET,网站非网站 -这是列表)。您可以在此处找到有关 EF6 工具更改的更多详细信息。
我不确定如何使用 EDMX 生成ObjectContext
,但不建议使用它。DbContext
之所以使用,是因为 99% 的用户ObjectContext
不需要 的功能。
但是,您可以从 a 获取对 ObjectContext 的引用DbContext
:((IObjectContextAdapter)dbContext).ObjectContext