gpt4 book ai didi

asp.net-mvc - 我应该使用 EF 在存储库模式中实现 DTO 吗?

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

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.

1年前关闭。




Improve this question




在我的项目中,我使用的是 EF Code First 方法。我有一个存储层、服务层和表示层(ASP.NET MVC)。我为每个 View 使用一个专用的 View 模型。
我感到困惑的是,我的服务应该将实体返回到 Controller 以将它们映射到 View 模型,还是应该实现 DTO 并从服务中返回它们?
所以问题是当流程像“EF -> Repository -> Service -> UI”时,数据转换将是什么。 “实体 -> DTO -> View 模型”还是“实体 -> View 模型”?
似乎如果我使用 DTO,它们会有点重复实体。
我正在尝试遵循最佳实践。

最佳答案

使用 DTO 方法。

这将极大地帮助您使您的应用程序不受数据库结构更改的影响。

将 EF 实体映射到表示层将使任何数据库更改都难以维护。这么多地方你需要留意。

作为不同方法的两个示例: 现在,我正在处理一个最初直接绑定(bind)到 EF 实体的大型项目。这会导致各种并发症。即使是很小的数据库调整,有些部分也需要进行大量代码更改。另一方面,在我的家庭宠物项目中,我能够毫无问题地更改整个数据库系统 3 次,因为我中间有很好的抽象层。

尤其是现在开始时,您的项目架构仍然干净,实现 DTO 的工作似乎是重复的。但是当你的几个应用层开始自己的生活时,这可能会随着时间的推移而改变。

如果您害怕实现 DTO 的看似重复的工作,可以使用 AutoMapper 之类的映射库。这可以让你远离很多痛苦。

关于asp.net-mvc - 我应该使用 EF 在存储库模式中实现 DTO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19932876/

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