我在c#中设计一个主要与数据库进行对话的Web应用程序。我为数据库中的每个表创建了一个DTO。现在,对于每个表,都有一个自定义表存储库类,它执行与该特定表有关的所有保存和提取,并且我正在使用存储过程。
问题是现在一些存储过程实际上会执行内部联接操作,然后发送一个自定义输出,它是2个表的组合。
因此,我无法将数据存储在单个DTO对象中。
如果有任何基本操作主要在单个表上完成,那么事情就好了。我可以调用表dto对象进行插入和从数据库中取出。 但是当存储过程中存在连接时,在某些情况下我们会更新多个表。
我们应该如何设计应用程序?
请帮助
由于
答案 0 :(得分:2)
听起来您可能想要重新考虑使用直接对应于数据库中每个表的DTO。
相反,DTO应该对应于在网站后面使用的真实世界模型中的逻辑。因此,例如,Customer对象可能在其中包含订单ID的集合,即使这些订单ID在逻辑上存储在数据库中的两个表中。
让DTO引用其他DTO没有任何错误(实际上通常是必不可少的),因此您可以拥有一个指向Address类列表的Customer类。
如果事情变得更复杂,你很可能会考虑在这一点上引入另一个层,使用真正的“域对象”映射到你的DTO,它的声音是“持久性对象”。