【问题标题】:What is the best approach when trying to use POCO with EF4?尝试将 POCO 与 EF4 一起使用时,最好的方法是什么?
【发布时间】:2011-01-25 21:26:18
【问题描述】:

我已经阅读了here 3 种使用实体框架实现 POCO 的方法,即

  1. 创建 edmx 模型并关闭代码生成,这样模型就不会为您创建繁重的实体。然后,您将创建必须遵循一些限制的 POCO 类。
  2. 你可以使用POCO template,可以下载到VS 2010。
  3. 使用 Code First 方法对 POCO 进行编码并在代码中定义映射。去做 这你需要来自here 的EF 4.0 Feature CTP。

我个人会选择第二种方法,因为它更快,但是我应该记住什么,因为它派生自 ObjectContext 我猜它在某种程度上是耦合的?我知道第三种方法提供了最大的灵活性,但值得吗?请分享您对此的看法。谢谢!

【问题讨论】:

  • 如果我无法控制主机上安装的内容,是否可以在共享主机环境中使用 CTP?我认为这很重要。

标签: entity-framework-4 implementation poco


【解决方案1】:

您为“POCO 模板”提供的链接已损坏 - 但我认为您的意思是:

http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313

此模板可以(并且应该)与您所述的选项 1 结合使用。

这就是我在当前应用程序中使用的:

1 - 创建 EDMX 模型

2 - 关闭代码生成

3 - 使用 POCO Generator 生成 POCO 类

POCO 不是从任何东西派生的——它们是纯粹的 POCO。

【讨论】:

  • 您如何看待第三个选项?这值得么 ?此外,生成的 poco 类上下文来自 ObjectContext,您认为这是一个问题还是一个缺点?
  • 我没有先使用代码,所以我无法评论它。我个人更喜欢看模型(EDMX)。 POCO 类不派生自 ObjectContext。这仅在您使用默认代码生成时发生 - 它们不是 POCO。
  • @Misnomer:首先,您不需要使用派生上下文。您可以直接使用 ObjectContext。即使使用 CTP,您也会有从 DbContext 派生的类,所以我看不出有任何缺点。如果您不想将这些类型公开给上层,请检查工作单元和存储库模式或在派生的 ObjectContext 上定义接口并使用任何 IoC 容器来注入实现。
【解决方案2】:

我发现这两个链接在设置我的模型/poco 类时非常有用。 Poco generationPoco options。如上所述,关闭 edmx 中的代码生成并通过 Microsoft 提供的两个 T4 模板创建派生的 ObjectContext 类和您的 Poco 类是一个好主意(当然,如果使用存储库模式)。

如果您使用 T4 模板而不对其进行任何更改,那么您将获得一组 Poco 类,并在生成的代码中启用了“使用 Fixup 更改跟踪代理”选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-16
    • 2011-12-13
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多