Ho una funzione per generare un'espressione da utilizzare in una clausola linq Where.Expression <Func<T,bool>> aggiunge una conversione indesiderata quando viene creata nel metodo generico
public static Expression<Func<T,bool>> GetWhereCondition<T>() where T : IActive
{
return x => x.Active;
}
(si noti l'IActive definisce solo la proprietà 'Attivo')
Ci sono altre funzioni correlate e l'idea è che posso iniettare le condizioni richieste in una classe generica per controllare le regole di business, ecc
il problema è che quando ho eseguito questo, l'espressione restituita contiene il Lamda (visto dal debugger):
x => Convert(x).Active
che naturalmente è rej ect by linq: 'LINQ to Entities supporta solo il cast di tipi primitivi di Entity Data Model.'
Quindi la mia domanda è ...
Come faccio a impedire questo comportamento. Non c'è bisogno di una conversione e chiaramente non è auspicabile. È persino possibile impedirlo?
ah, interessante; la differenza fondamentale è il passaggio da "vincolato" a "callvirt"; è interessante che questo lo faccia funzionare –