【问题标题】:What is the difference between writting class using Code First approch or POCO?使用 Code First 方法或 POCO 编写课程有什么区别?
【发布时间】:2026-02-09 09:45:01
【问题描述】:

EF 和 ORM。

我最近意识到,使用 POCO 可以让干净的类不使用 EF 自动生成的代码。

我看到了 EF 4.1 的新版本以及 Code First 方法和 DbContext 的使用。

我的问题:

  • Code First 方法和 Poco 方法有什么区别?
  • 我们可以使用 Code First(DbContext 和 DbSet)代替 POCO + Repository 模式吗?

感谢您抽出宝贵时间。

【问题讨论】:

    标签: entity-framework entity-framework-4.1 poco


    【解决方案1】:

    它们是完全不同的东西,你可以一起使用它们。

    POCO 意味着您的实体类是“普通”类,不依赖于任何特定的 ORM 层。

    DbContext 是一个对象,可让您以面向对象的方式访问数据库(如早期版本的 EF 中的 ObjectContext)。

    查看this tutorial 的示例。

    【讨论】:

    • 感谢 Thomas 对此发表评论。
    • 我开始阅读这篇文章,它指出: CODE FIRST 通过简单地编写“普通旧类”来定义您的模型对象,不需要基类 使用“约定优于配置”的方法,无需显式配置任何东西
    • 所以我担心第一代码方法与 poco 有什么相似之处?我说的对吗?
    • @GibboK:代码优先是将类映射到数据库的方法,您首先在其中编写类并从中生成数据库。这些类可能是持久无知的= POCO。
    • 好的,我理解你的意思.. 那么我在哪里添加持久性的实际代码?存储库?那么对于 EF 4.1,我是否可以避免使用存储库而使用 DbContext 和 DbSet?感谢您抽出宝贵时间