Estoy tratando de hacer una pequeña consulta LINQ To SQL en una base de datos SQL CE.evaluando un campo booleano frente a un bit en LINQ To SQL query
var result = from item in items
where item.IsTrue == true
select item;
El problema es que la propiedad es un campo IsTrue
bit
en la base de datos (bool
en el CLR). Cuando va a SQL en CE obtengo SELECT ... WHERE ([t0].IsTrue = 1)..
El valor 1 es un número entero para SqlCe y no lo va a convertir de manera predeterminada.
El índice que tengo en esa columna (la columna IsTrue) no se usa. En su lugar, intenta convertir todos los valores de istrue
en la base de datos en enteros y los compara con los 1.
¿Cómo puedo obtener LINQ To SQL para generar WHERE ([t0].IsTrue = Cast(1 as bit))...
? Necesito de alguna manera forzar el lanzamiento de ese valor a bit
, y de ese modo permitir el uso del índice?
me trataron:
item.IsTrue == Convert.ToBoolean(1)
item.IsTrue == Convert.ToBoolean("true")
item.IsTrue == (bool)true)
Con la esperanza de obtener el árbol de expresión para tener un yeso en ella de modo que se convierte en un molde en LINQ Para SQL, pero no puedo encontrar la manera. ¿Algunas ideas?
Sé que es 6 años después, pero Entity Framework está haciendo el casting a poco ahora. Al menos es para mí. –