gpt4 book ai didi

entity-framework - 从存储库而不是 EF 实体返回 POCO 对象的优缺点是什么?

转载 作者:行者123 更新时间:2023-12-04 06:29:57 25 4
gpt4 key购买 nike

按照 Rob 的做法,我拥有由 Linq to SQL 向导生成的类,然后是这些类的 POCO 副本。在我的存储库中,我返回这些 POCO 而不是 Linq to SQL 模型:

从 DataContext.Customer 中的 c 返回
其中 c.ID == id
选择新的 MyPocoModels.Customer { ID = c.ID, Name = c.Name }

我知道这样做的好处是可以更轻松地实例化 POCO 模型,因此这将使我的代码更易于测试。

我现在正在从 Linq 转移到 SQL 再到 Entity Framework ,我大约读了一半 EF 书籍。通过从我的存储库而不是 EF 实体返回 POCO,我似乎会失去很多好处。

我还没有真正接受单元测试,所以我觉得我浪费了很多时间来创建这些额外的 POCO 并编写代码来填充它们,而我似乎获得的只是可测试的代码,但我也由于无法跟踪我的对象,将失去 EF 的许多好处。

有没有人对所有这些 ORM/Repository 的东西有任何建议?

安东尼

最佳答案

人们不喜欢自动生成对象的另一个原因(例如在 LINQ to SQL 中)是因为它们内置的“魔法”。

通常这种魔法是不可见的,你永远不会注意到它,但是当你尝试序列化这些对象之一然后反序列化它时(例如在使用 Web 服务时),它与数据源的内部连接被破坏,需要特殊的黑客攻击被用来“把魔法放回去”。

使用 POCO,您不必担心这些事情,并且可以更好地分离数据层和服务层。当然缺点是你要写很多无聊的POCO->魔法对象和魔法对象->POCO转换代码。但最终我认为这通常是值得的,尤其是对于大型或复杂的项目。

关于entity-framework - 从存储库而不是 EF 实体返回 POCO 对象的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847254/

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