我对POCO +实体框架v4的理解是否正确?

时间:2010-09-06 02:36:29

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

根据我对使用POCO和Entity Framework v4的理解,有人可以确认/纠正我吗?

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

1 个答案:

答案 0 :(得分:5)

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

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

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

第二种选择与第一种选择相同,但您不需要自己创建POCO类。而是使用可以下载到VS 2010的POCO模板。此模板使用.tt文件为您生成POCO。

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