Fetch和Query有什么区别?

时间:2014-06-05 12:10:05

标签: c# petapoco

对我而言,PetaPoco的Database.FetchDatabase.Query似乎在做同样的事情。

例如,

var db = new PetaPoco.Database("myDB");
ProductList products = db.Fetch<ProductList>("SELECT * FROM ProductList");
ProductList products = db.Query<ProductList>("SELECT * FROM ProductList");

他们之间有什么显着差异吗?

2 个答案:

答案 0 :(得分:17)

根据PetaPoco documentation,这就是答案:

  

查询与提取

     

Database类有两种方法可用于检索记录Query和Fetch。这些几乎相同,只是Fetch返回List&lt;&gt; POCO,而Query使用yield return迭代结果而不将整个集合加载到内存中。

答案 1 :(得分:0)

如果在事务中使用它们,则提取和查询的行为会有所不同。我有一个用例,我需要在一个事务中更新几个表,但我需要从序列中间的引用表中检索一些数据。

当我使用Query检索数据时,后续的插入或更新失败并出现InvalidOperationException:“已经有一个与此命令关联的打开的DataReader必须先关闭”

解决方案是用Fetch替换Query,我能够完成序列。

这个伪代码是:

'