Pregunta

Para mí, PetaPoco Database.Fetch y Database.Query parece estar haciendo lo mismo.

Por ejemplo,

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

¿Hay alguna diferencia significativa entre ellos?

¿Fue útil?

Solución

De acuerdo con la Documentación de PetaPoco, esta es la respuesta:

Consulta vs recuperación

La clase Base de datos tiene dos métodos para recuperar registros: Consulta y Búsqueda.Estos son prácticamente idénticos, excepto que Fetch devuelve una Lista <> de POCO, mientras que Query usa el retorno de rendimiento para iterar sobre los resultados sin cargar todo el conjunto en la memoria.

Otros consejos

La recuperación y la consulta se comportan de manera diferente si las usa dentro de una transacción.Tuve un caso de uso en el que necesitaba actualizar varias tablas en una transacción pero necesitaba recuperar algunos datos de una tabla de referencia en medio de la secuencia.

Cuando recuperé los datos con Consulta y las inserciones o actualizaciones posteriores fallaron con una InvalidOperationException:"Ya existe un DataReader abierto asociado con este comando que debe cerrarse primero"

La solución fue reemplazar la consulta con Fetch y pude completar la secuencia.

El pseudocódigo para esto es:

BeginTransaction Update Tbl1 Update Tbl2 Query RefTblA ## Changed Query to Fetch to avoid: '...already an open DataReader..." exception Update Tbl3 using data from RefTblA CompleteTransaction

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top