podría señalar a alguien por qué esto podría estar sucediendo:C# comportamiento extraño lambda
estoy usando NHibernate
y el proveedor Linq
por ello.
El código que no está en la lista aquí:
var sequence = session.Query<T>();
var wtfSequence = sequence.Where(x => true);
var okaySequence = sequence.Where(x => x.Id > 0);
Depuración muestra que sequence
(que es un IQueryable<T>
) después de este contiene 2 elementos, que se añadieron a la base de datos.
Espero que la primera declaración Where
arroje todos los elementos de esa secuencia, pero desafortunadamente deja 0 elementos.
(QUÉ ???)
El segundo Where
comunicado, por el contrario, en realidad produce 2 elementos como debería funcionar.
Aquí están las consultas NHibernate -> Sqlite
para la primera y la segunda declaración Where
.
NHibernate: select cast(count(*) as INTEGER) as col_0_0_ from "BinaryUnitProxy_IndicatorUnitDescriptor" binaryunit0_ where @p0='true';@p0 = 'True' [Type: String (0)]
NHibernate: select cast(count(*) as INTEGER) as col_0_0_ from "BinaryUnitProxy_IndicatorUnitDescriptor" binaryunit0_ where binaryunit0_.Id>@p0;@p0 = 0 [Type: Int32 (0)]
Ahora, si pruebo el mismo código con mi InMemoryRepository
, que almacena todas las entidades en una lista simple, el (x => true)
funciona bien absolutelty.
Entonces, ¿por qué ocurre esto al usar NHibernate
? ¿Es esto un error o estoy haciendo algo mal?
Gracias.
Lo más probable es que esté relacionado con la forma en que NHibernate trata la Expresión que crea de la lambda, aunque sepas lo que está haciendo ... – Massif