数据访问设计:多个结果集单个存储过程或每个存储过程单个结果集

本文关键字:单个 存储过程 结果 访问 数据 | 更新日期: 2023-09-27 18:33:30

这是构建复杂对象(预先加载(的更好方法。对返回多个结果集的存储过程的单个调用,还是对存储过程的多个调用,每个存储过程都有一个结果集?我正在使用 .NET 中的 T4/文本模板构建我的 DAL,所以我倾向于后者。

谢谢!

数据访问设计:多个结果集单个存储过程或每个存储过程单个结果集

这取决于应用程序的整体体系结构设计模型。 如果您使用的是所谓的表数据网关或活动记录,则后者可能更好。 如果您使用的是所谓的领域模型或领域驱动设计,那么前者更合适。

我不记得我们上次编写一个一次返回多个结果集的存储过程是什么时候了。 这实际上是一种整体好处,这很少见。

我能想到做这样的事情的唯一原因是(a(性能 - 例如,如果SELECTS需要临时表或所有表通用的大量设置,或者(b(如果数据在调用之间有更改的风险并希望使用可序列化的隔离语义。

如果所有行集都是相互独立的,并且没有通用设置,则一定要将它们分开。 假设您使用的是较低级别的连接协议(例如 TCP/IP 或命名管道,而不是某种像 SQL over XML 这样的聊天技术(,往返的成本并不是一个重要的因素。更重要的是,如果可以单独调用 sprocs,这意味着您可以异步和并行调用它们,如果您希望麻烦,甚至可以实现卓越的性能。