0

我正在用 c# 设计一个主要与数据库对话的 Web 应用程序。我为数据库中的每个表创建了一个 DTO。现在对于每个表都有一个自定义表存储库类,它执行与该特定表有关的所有保存和获取,我正在为此使用存储过程。

现在的问题是一些存储过程实际上会执行内部连接操作,然后发送一个自定义输出,该输出是 2 个表的组合。

因此,我无法将数据存储在单个 DTO 对象中。

如果有任何基本操作主要在单个表上完成,那么一切都很好。我可以调用表 dto 对象来进行插入和从数据库中获取。但是当存储过程中存在连接时,并且在某些情况下,我们会更新多个表。

我们应该如何设计应用程序?

请帮忙

谢谢

4

1 回答 1

2

听起来您可能想重新考虑拥有一个直接对应于数据库中每个表的 DTO。

相反,DTO 应该对应于 Web 站点背后使用的真实世界模型中的某种逻辑。因此,例如,一个 Customer 对象可能在其中包含一组订单 ID,即使这些 ID 在逻辑上存储在数据库的两个表中。

让 DTO 引用其他 DTO 并没有错(实际上这通常是必不可少的),因此例如,您可以拥有一个指向 Address 类列表的 Customer 类。

如果事情变得更复杂,您很可能会考虑在此时引入另一个层,其中包含映射到您的 DTO 的真正“域对象”,从它的声音来看,它是“持久性对象”。

于 2009-11-25T14:21:05.620 回答