【问题标题】:Entity Framework 5 with existing DB, use generated POCO's? Move POCO's into it's own project?具有现有数据库的实体框架 5,使用生成的 POCO?将 POCO 转移到自己的项目中?
【发布时间】:2012-12-25 09:35:53
【问题描述】:

我有一个包含现有数据库的项目,该数据库最初是为遗留应用程序创建的。它工作正常,但随着时间的推移,相当多的表/字段已经丢失或未充分利用,但历史数据可能有朝一日有用,所以它们不会去任何地方。

进入 2012 ('13) 和 Entity Framework 5,这是一个内置 POCO 生成的 ORM(不错的添加!)。太棒了.. 连接到 Oracle 数据库,gen。了解上下文和一些 POCO 的.. suh-weet !但是等等..我的 POCO 并不是我想要处理的 POCO ......有一堆我不再需要的字段(不是说我永远不需要它们,但我不能确定),所以现在我有了这些 POCO,它们基本上是臃肿的表映射器......那我该怎么办。

我在这里看到了一些解决方案..

1)。我可以把它们扔掉,只使用我需要的字段。

2)。我可以进入模型表面并开始删除未使用的字段。

3)。 “代码优先”方法并将对象绑定到现有数据库中,但它是一个大型数据库(我很确定这是可能的,对吧?)

4)。在它自己的模型项目中创建我自己的 POCO / DTO,这些将基本上成为我的“域模型”,但映射回上下文可能会很痛苦..

最后,这些 POCO / DTO 是否需要在他们自己的项目中?真的有什么收获..看到像“YAGNI”这样的东西,我觉得它可以坐在.edmx下面,从不打扰任何人..

顺便说一句,我也将需要其中一些通过 JSON,因此需要考虑整个可序列化能力..

我可以只对生成的 POCO 进行部分分类,并且只对我需要的属性进行“属性化”吗?

无论如何,很高兴听到过去的经验或对此事的想法。

我可以在 Programmers 中看到它,但我想我应该从这里开始。

【问题讨论】:

    标签: entity-framework poco


    【解决方案1】:

    我们有一个非常相似的情况,一个大型的遗留 DB2 数据库,我们需要其中的一小部分特定表用于我们的应用程序。

    为此,我们使用实体框架代码优先模型来处理我们感兴趣的相关数据子部分。这意味着我们可以做一些重要的事情:

    • 从模型中删除不相关的数据,使代码更容易被发现
    • 重命名我们模型中的字段并将它们映射到在应用程序中有意义的名称而不是现有的列名称
    • 减少查询拉回的数据量(即我们的选择不会抓取所有额外的位)
    • 存在 2 种数据格式的地方使用现代标准而不是历史格式

    这对我们来说非常有效,但有几点需要注意:

    • 如果您正在编写,请确保在模型中包含所有必填字段
    • 你可以生成你的 CF 类,但你必须稍微修剪一下
    • 从非 mssql 生成有时会更加棘手

    在 json 序列化方面,我们也这样做,但是我们为此使用不同的模型并使用 automapper 进行翻译。在大多数情况下,您应该能够在不需要添加额外属性的情况下进行序列化,但如果需要它们,您可以将它们与任何 ef 属性一起添加到您的 pocos 中。

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 2011-05-09
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多