我有一个带有现有数据库的项目,该数据库最初是为遗留应用程序创建的。它工作正常,但随着时间的推移,相当多的表/字段已经丢失或利用不足,但历史数据可能有一天有用,所以他们不会去任何地方。
输入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进行局部分类,并且只将“属性”分类为我需要的属性吗?
无论如何,从过去的经历或对此事的想法中听到它会很棒。
我可以在程序员中看到这个,但我想我会在这里开始。
答案 0 :(得分:1)
我们有一个非常相似的情况,一个庞大的遗留DB2数据库,我们需要为我们的应用程序提供特定表的一小部分。
为了做到这一点,我们使用了实体框架代码的第一个模型,用于我们感兴趣的数据的相关子部分。这意味着我们可以做一些重要的事情:这对我们来说非常好,但有几点需要注意:
就json序列化而言,我们也这样做,但是我们使用不同的模型并使用automapper进行翻译。在大多数情况下,您应该能够序列化而无需添加额外的属性,但如果需要,您可以将它们与任何ef属性一起添加到您的pocos中。