对我而言,PetaPoco的Database.Fetch
和Database.Query
似乎在做同样的事情。
例如,
var db = new PetaPoco.Database("myDB");
ProductList products = db.Fetch<ProductList>("SELECT * FROM ProductList");
ProductList products = db.Query<ProductList>("SELECT * FROM ProductList");
他们之间有什么显着差异吗?
答案 0 :(得分:17)
根据PetaPoco documentation,这就是答案:
查询与提取
Database类有两种方法可用于检索记录Query和Fetch。这些几乎相同,只是Fetch返回List&lt;&gt; POCO,而Query使用yield return迭代结果而不将整个集合加载到内存中。
答案 1 :(得分:0)
如果在事务中使用它们,则提取和查询的行为会有所不同。我有一个用例,我需要在一个事务中更新几个表,但我需要从序列中间的引用表中检索一些数据。
当我使用Query检索数据时,后续的插入或更新失败并出现InvalidOperationException:“已经有一个与此命令关联的打开的DataReader必须先关闭”
解决方案是用Fetch替换Query,我能够完成序列。
这个伪代码是:
'