实体框架5与现有的DB,使用生成的POCO?将POCO转移到自己的项目中?

时间:2013-01-10 21:16:29

标签: entity-framework poco

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

输入2012('13)和Entity Framework 5,这是一个内置POCO代的ORM(Nice Add!)。砰的一声..获取与Oracle数据库的连接,gen。上下文和一些POCO的...... suh-weet !!但是等等......我的POCO并不是我想要处理的POCO ......有一堆我不再需要的领域(不是说我永远不需要它们,但我不能确定),所以现在我已经拥有了这些POCO,这些POCO基本上是臃肿的表格映射器......所以我应该怎么做。

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

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

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

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

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

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

另一方面,我也需要通过JSON中的一些,所以需要考虑整个可序列化的能力..

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

无论如何,从过去的经历或对此事的想法中听到它会很棒。

我可以在程序员中看到这个,但我想我会在这里开始。

1 个答案:

答案 0 :(得分:1)

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

为了做到这一点,我们使用了实体框架代码的第一个模型,用于我们感兴趣的数据的相关子部分。这意味着我们可以做一些重要的事情:

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

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

  • 如果您正在撰写,请确保在模型中包含所有必填字段
  • 你可以为你生成CF课程,但你必须修剪它们
  • 从非mssql生成有时可能更棘手

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