gpt4 book ai didi

entity-framework - 具有现有数据库的 Entity Framework 5,使用生成的 POCO?将 POCO 移到它自己的项目中?

转载 作者:行者123 更新时间:2023-12-04 08:32:26 25 4
gpt4 key购买 nike

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

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

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

1).我可以随意使用它们,只使用我需要的字段。

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

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

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

最后,这些 POCO/DTO 是否需要在他们自己的项目中?真正有什么好处.. 看到像“YAGNI”这样的东西,我觉得它可以放在 .edmx 下并且永远不会打扰任何人..

附带说明一下,我也需要通过 JSON 获取其中一些,因此需要考虑整个可序列化能力。

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

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

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

最佳答案

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

为此,我们对我们感兴趣的数据的相关子部分使用了 Entity Framework 代码优先模型。这意味着我们可以做一些重要的事情:

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

这对我们来说效果很好,但有几点需要注意:

  • 如果您正在编写,请确保您在模型中包含所有必填字段
  • 您可以生成 CF 类,但您必须对它们进行一些修整
  • 从非 mssql 生成有时会更棘手

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

关于entity-framework - 具有现有数据库的 Entity Framework 5,使用生成的 POCO?将 POCO 移到它自己的项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com