[英]Filling object from a datareader
采访中有人问我一个问题。 您如何用数据读取器返回的数据填充自定义对象。
我的答案是使用datareader.read(),创建自定义对象的实例并使用datareader值设置属性。
面试官不满意。 他说,如果我有数百万条记录,那么使用我的方法来填充这些记录将非常缓慢。 他要求我提出另一种方法。
除此之外,还有其他方法吗? 请评论。
您的方法是完全有效的,并已在许多地方使用。 现在,如果您有数百万条记录,您可能将始终不希望填充内存中的对象。 但是我想这将取决于您将如何处理该对象。 如果访问者说他不想循环这些记录,那么这将违背数据读取器的目的。
您是否建议将业务对象存储在某种内存数据结构中? 如果是这样,面试官也许对解决方案感兴趣,在该解决方案中,对象可以在生成器方法中实例化,然后使用yield return
返回给消费者。
这实际上取决于场景-那里没有足够的要求,但是有一些想法:
yield return
)避免了必须缓冲所有数据 ILGenerator
等,或Expression
),或诸如HyperDescriptor之类的东西可以消除反射 Count
,否则您将无法提前获取Count
我对这个问题的立即回答是:“如何用DataReader
返回的数据填充自定义对象?” 是“通过使用合成”。 显然,面试官以为他在问一个不同且有趣得多的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.