我需要一个列出订单和相关数据的网格。(纯属虚构示例)
为简单起见:
OrderID
OrderName
OrderDate
Collection Parts
Collection Destinations
Collection SuppliersInvolved
网格应显示每个订单,以及每个集合的文本描述,例如:
OrderID OrderName OrderDate Parts Destinations SupplierInvolved
2 davo 21/5/12 A,B,C London, Paris SuppA,SuppB,SuppC
现在,这个网格可能有多达 200 行。
这个问题是,我们使用的定制 ORM 在将多 PK 结果集映射到唯一对象时存在一些主要的缓慢问题。
例如。
OrderID OrderName OrderDate Part Destination Supplier
2 davo 21/5/12 A London SuppA
2 davo 21/5/12 B London SuppA
2 davo 21/5/12 A London SuppB
2 davo 21/5/12 B London SuppB
即使结果集中涉及 1 个集合,它也存在此问题。查询本身执行得非常好和快,问题是映射。
所以,我真的有两个选择(据我所知):
获取订单结果集,对于结果集中的每个订单,获取零件、获取目的地、获取供应商等。这反过来意味着对数据库的 601 次调用。
使用FOR XML PATH将每个集合组合在一起。意味着更多的 CPU 密集型和读取繁重的初始查询。
我想知道,首先,上述两种方法中哪一种看起来更好,其次,是否还有其他更好的方法我没有想到。问题是两者都必须使用垃圾对象映射器(不能仅为此查询的结果集创建我自己的 DAL 映射过程)。
有任何想法吗?
谢谢。