El operador ==
genera una BinaryExpression que se puede convertir a SQL y la .Equals()
método genera un MethodCallExpression que aparentemente es no convertido a SQL.
Por lo general, los operadores binarios se manejan en QueryOver
y también en LINQ, pero sólo se trabaje con un par de llamadas de método (string.Contains
, array.Contains
, etc.) así que mejor los operadores su uso cuando sea posible.
Recuerde también que las llamadas a operadores/métodos no se ejecutan en realidad, sino que se convierten en sentencias de SQL, por lo que si tiene sustituciones/implementaciones personalizadas, es posible que no funcionen como se esperaba.
Por todo lo expuesto su código se escribiría como:
var q = SessionInstance.QueryOver<Person>().Where(p => p.Number == number);
Se puede publicar el mapeo de 'Person'? también puedes probar '.Where (p => p.Number == number' –
¡Gracias! El problema se resolvió mediante el reemplazo '==' leiu es igual. Lo que es diferente entre '==' y 'Igual' en el campo por int Tipo ? – Ehsan