gpt4 book ai didi

c# - 使用一次数据库调用加载业务对象层次结构

转载 作者:太空狗 更新时间:2023-10-30 01:12:26 26 4
gpt4 key购买 nike

我想知道从单个数据库调用填充业务对象层次结构(父/子/孙)结构的最佳实践是什么。

我可以想到几种方法来完成它,例如:

左连接我的sql语句中的所有关系,然后使用循环和逻辑来填充业务对象

使用多个选择语句和 1 个数据读取器并使用其 NextResult() 方法遍历每个结果集并填充相应的 BO

只是想知道最好的做法是什么

我正在为我的 DAL 使用 DAAB 和 c#

谢谢!

最佳答案

没有万能的秘方。这取决于您的应用程序在典型场景中读取的数据库架构、数据库大小和记录数。这里有两个进程:

  • 从数据库中获取数据
  • 填充业务对象

从数据库中获取数据比在内存中创建对象要慢几个数量级。最好的方法是构造 select 语句以实现最快的数据访问。

可以通过三种方式构造查询:

  • 在单次执行中获取所有内容的大型查询 - 您将获得最复杂的 SQL,并且执行速度可能最快(取决于数据库模式)
  • 主要/详细信息方法 - 简单查询。大量流量到数据库。这只有在您获取少量记录时才可以接受,否则会很慢。
  • 混合:层次结构的每一层都有一个查询。如果前两种方法变慢,请考虑这种方法。这种方法需要更复杂的逻辑来填充业务对象。

您应该决定哪种解决方案是可以接受的。需要考虑的一些关键点:

  • 哪个 SQL 更容易创建和维护 - 一个大的可以在一次读取中获取所有内容或几个较小的。
  • 当你选择上一点时,你应该衡量性能并做出最终决定

关于c# - 使用一次数据库调用加载业务对象层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/441532/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com