c# - 三层 Entity Framework 应用程序中的 DTO

标签 c# entity-framework architecture dto

我正在构建两个 C# 三层应用程序,它们将数据获取到一个非常旧的数据库客户表中,该表有大约 100 列。它们在业务层执行一些逻辑,而表示层显示数据。

客户表的布局是——

CustomerID
Firstname
Lastname
DateOfBirth
Othervalue1
Othervalue2
Othervalue3
.
.
Othervalue95
Creationdate
Updatedate

对于这两个应用程序,我只需要客户表,但我正在使用 Entity Framework 构建一个新的数据访问层。 future 的项目将需要访问其他表并将添加到此访问层。

我将使用工作单元和存储库模式。

我的问题如下 -

应用程序 A 需要客户表列的一个子集

应用程序 B 需要客户表列的不同子集(与应用程序 A 的需求有一些重叠)

如何进行数据层到这两个独立业务层的映射?我知道我可以使用 automapper 来执行从数据实体类到业务层类的映射,但是我将有两个不同的业务层客户类。

我已经阅读了一些有关 DTO 的内容,但我看不出在这个 n 层应用程序中应该去哪里。

最佳答案

您可以根据您的应用程序设计使用其中任何一个
1 - 将客户表映射到两个或多个实体
2 - 有一个基本实体,如 CustomerBase 和 2 个或更多子实体。
3 - DTO 是数据传输对象,它们(通常)是可变的。更改它们不会导致对数据库进行 CRUD 操作。
DTO 用于以下场景:客户实体是一个重量级对象(例如 100 列),您只需要该数据的一个子集(例如 20 列)。 DTO 对象和实际实体之间的转换可以通过多种方式实现,例如自动映射器、手动运算符重载等等......

希望对你有帮助

关于c# - 三层 Entity Framework 应用程序中的 DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802516/

相关文章:

c# - 在 XAML 中应用自定义画笔

c# - 使用值注入(inject)器映射不同的属性值

c# - 包括一个集合,然后是下一级的集合

database - 多个数据库与一个数据库,ID 用于分隔组织

c# - 为什么反编译代码包含 foreach 循环?

c# - 将 RichTextBox 文本转换为流 C#

c# - 使用 OpenXML 将 Word docx 转换为 Excel

c# - 使用 Entity Framework 获取列表中的行索引

java - 如何在Oracle中回滚/超时 “select for update”锁?

java - 架构 : Data Persistency , 搜索和推荐系统