214 messaggi dal 25 settembre 2001
Ciao a tutti,
ho questo problema ho customizzato un oggetto devitato da un dbml
con il tipo

private int isAttivo = 0;
public global::System.Int32 IsAttivo
{
get
{
if (ISVISIBILE == 1 && ATTIVOAL >= DateTime.Now)
{
isAttivo = 1;
}
return isAttivo;
}
set { isAttivo = value; }
}
finchè sono in visualizzazione funziona tutto senza problemi,
ora vorrei utilizzarlo in un LinqDataSource tipo

Where="IsAttivo == @IsAttivo">
<WhereParameters>
<asp:Parameter DefaultValue="0" Name="IsAttivo" Type="Int32" />
</WhereParameters>

ma ritorna sempre questo tipo di errore...

System.NotSupportedException: Non sono supportate conversioni a SQL per il membro 'TABELLA.IsAttivo'.

ho cercato online invano....

Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
se la tua proprietà IsAttivo non è mappata nel dbml - e potrebbe non esistere come colonna dato che il suo valore è calcolato - allora non puoi usarla in una WHERE perché il provider LINQ to SQL non saprebbe della sua esistenza durante la generazione della query SQL.

Il provider, infatti, non è in grado di esaminare il getter di IsAttivo e capire che, in realtà, le colonne coinvolte nella generazione del valore sono ISVISIBILE e ATTIVODAL.

Per risolvere il problema potresti creare la colonna IsAttivo nel database, come campo calcolato. A quel punto puoi usarlo nella Where, dopo averlo mappato.

In alternativa, nella WHERE rinunci ad usare IsAttivo e usi invece le due proprietà ISVISIBILE e ATTIVODAL.

ciao

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.