3

我用视觉设计师创建了模型。现在我想从中生成 POCO 类。在我的另一个问题中,向我建议了 EF4.1 简化的 API 模型优先方法。之前我也在考虑 T4 模板。

与使用 T4 模板生成 POCO 类相比,EF4.1 简化 API Model First 的限制是什么?如果有的话,EF4.1 方法有什么优势(除了它应该更易于使用)?我现在的决定将很难撤销,因为我将拥有相当大的持久层,因此将来可能很难对其进行更改。

特别是,我对此功能感兴趣:

  • 每次我更改模型(在可视化设计器中)时,我能否获得这两个选项中的任何一个来生成数据库表,这样我就不必生成查询并运行它们?这将大大加快我的开发过程(出于某种原因,我每次更改模型时都必须手动删除表,因此需要很多时间)。我知道这可以做到
  • 我可以在另一个项目中使用 POCO 课程吗?我知道这可以是 T4 模板的圆顶,但简化的 API 也可以吗?
  • 生成的 POCO 类中的属性是否可以在每次从模型重新生成时被注释而不被覆盖?(这确实可以通过代码优先方法实现)
  • 效率有什么区别吗?

如果重要的话,选择的任何技术都将用于 ASP.NET MVC 应用程序。


编辑: 如果您知道答案,请回答我的问题的任何子问题。也许连同另一个部分答案,它会给我我需要的信息。谢谢

4

1 回答 1

4

EF 4.1 提供了简化的 API,主要是因为 EF 中首次提供了代码优先方法。您描述的是模型优先方法。

我已经回答了类似的问题,但我会尝试回答您的个人问题:

  • DbContext API 的主要限制是缺乏信息。我们知道新功能,但我们仍然不知道如何实现 ObjectContext API 中可用的一些功能(简化可能删除了一些功能)。我不确定这与使用 DbContext 生成器 T4 模板的模型优先方法有何关系,因为在这种情况下,映射仍然在 EDMX 文件中定义,因此应该克服代码优先映射的一些众所周知的问题。
  • 使用 DbContext API 自动生成数据库。默认情况下,ObjectContext API 仅提供 db 脚本生成,您必须执行该脚本。另一方面,如果您有 VS 2010 Premium 或 Ultimate,您可以下载实体设计器数据库生成电源包,它允许您逐步构建数据库,而无需每次都删除它。这是目前 DbContext API 无法实现的。
  • 您可以在具有这两个 API 的其他项目中拥有 POCO 类(模板)。
  • 是的,即使使用 T4 模板生成 POCO 类,您也可以使用注释
  • 不,效率没有区别。DbContext API 只是 ObjectContext API 之上的包装器。
于 2011-03-23T19:55:12.380 回答