【问题标题】:Is my understanding of POCO's + Entity Framework v4, correct?我对 POCO + Entity Framework v4 的理解正确吗?
【发布时间】:2010-09-06 02:36:28
【问题描述】:

根据我对在实体框架 v4 中使用 POCO 的理解,有人可以确认/纠正我吗?

如果我想在我的 EF4 上下文中使用 POCO,我还需要在设计器/.edmx 上放置/创建实体吗?是不是使用 POCO 的想法,所以我不需要使用那些“重”实体?还是我仍然需要这些实体,只是在其他地方我实际上将数据从实体中移出并移入我的 POCO ..这是任何消费代码使用的东西?

【问题讨论】:

    标签: entity-framework entity-framework-4 poco


    【解决方案1】:

    如果你想使用 POCO,你有三种选择:

    首选是创建 EDMX 模型。在 EDMX 中,您将关闭代码生成,因此模型不会为您创建繁重的实体。然后您将创建必须遵循这些约束的 POCO 类:

    • 每个类都必须与模型中的实体同名
    • 每个类都必须有无参数构造函数。应该是公开的,但我认为它也适用于受保护的情况。
    • 每个类都必须具有与模型中的名称完全相同的所有属性(包括导航属性)。除导航集合外的所有属性都必须具有 getter 和 setter(至少受保护)。
    • 导航集合的属性必须至少是 ICollection 类型,并且您必须初始化它们(这就是它们不需要 setter 的原因)。对于 EF 初始化集合的跟踪代理,情况并非如此。

    第二个选择和第一个一样,但你不是自己创建 POCO 类。相反,您使用可以下载到 VS 2010 的 POCO 模板。此模板使用 .tt 文件为您生成 POCO。

    第三种选择是使用 Code First 方法,在这种方法中对 POCO 进行编码并在代码中定义映射。为此,您需要EF 4.0 Feature CTP。我认为这是在没有 EDMX 模型的情况下使用 POCO 的唯一方法。但目前只是CTP,有很多限制。

    【讨论】:

    • 丹克。我害怕我仍然不得不让那些该死的实体仍然存在:(
    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 2012-01-27
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多