Sto cercando di eseguire una query LINQ semplice per SQL su un database SQL CE.valutazione di un valore booleano rispetto a un campo di bit in LINQ Alla query SQL
var result = from item in items
where item.IsTrue == true
select item;
Il problema è che la proprietà è un campo IsTrue
bit
nel database (bool
nel CLR). Quando si passa a SQL in CE, ottengo SELECT ... WHERE ([t0].IsTrue = 1)..
Il valore 1 è un numero intero di SqlCe e non lo trasmetterà di default.
L'indice che ho su quella colonna (la colonna IsTrue) non viene utilizzato. Cerca invece di convertire tutti i valori istrue
nel database in numeri interi e li confronta con 1.
Come posso ottenere LINQ su SQL per generare WHERE ([t0].IsTrue = Cast(1 as bit))...
? Ho bisogno in qualche modo di forzare la trasmissione di quel valore su un bit
, e quindi consentire l'uso dell'indice?
ho provato:
item.IsTrue == Convert.ToBoolean(1)
item.IsTrue == Convert.ToBoolean("true")
item.IsTrue == (bool)true)
Sperando di ottenere l'albero di espressione di avere un cast in modo che lo converte in un cast in LINQ To SQL, ma non riesco a trovare un modo. Qualche idea?
So che sono passati 6 anni, ma ora Entity Framework sta facendo il cast. Almeno è per me. –