2009-11-25 87 views
0

我正在设计一个Web应用程序在C#中,主要是与数据库交谈。我为数据库中的每个表创建了一个DTO。现在对于每个表都有一个自定义表存储库类,它可以完成与特定表有关的所有保存和提取操作,并且我正在使用存储过程。DTO的设计问题等

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

所以我不能够将数据存储在一个单一的DTO对象。

如果有这些在一个表,然后一切都很好,大多做过任何基本操作。我可以叫两个插入表DTO对象,并从数据库中获取。 但是,当存储过程中存在连接时,并且在某些情况下,我们会更新多个表。

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

请帮助

感谢

回答

2

听起来像是你可能要具有直接对应于每个数据库中的表DTO的重新思考。

相反,一个DTO应该对应于东西是这样的网站背后使用的现实世界模型的逻辑。因此,例如,一个Customer对象可能包含一个Order ID集合,即使它们逻辑上存储在数据库的两个表中。

没有什么错(其实它往往是必要的)有DTO引用其他DTO的,所以例如你可以有一个Customer类,它指向的地址类的列表。

如果事情变得更复杂,你很可能希望考虑在这一点上与映射到你的DTO,从它的声音是“持久化对象”真实的“域对象”引入另一层。

+0

谢谢, 我正在使用洋葱架构,并在基础设施层我有每个表的存储库类。如果我更改基于现实世界的情况下自定义的dtos然后我可能不得不定制存储库also.so我假设当前的dtos将出现在每个表中,但是我创建了一个有dtos组合的图层,然后实际上将这个对象传递给存储库类函数以用于保存或读取。或者您可以更好地提出一些建议。我很安静坚持对象:(。 – Rakesh 2009-11-25 16:53:27