2009-10-20 7 views
6

Viene visualizzato questo errore quando si fa clic sul pulsante/collegamento Elimina in un controllo GridView.LinqDataSource non supporta la proprietà Select quando le operazioni Delete, Insert o Update sono abilitate

LinqDataSource [DataSource] non supporta la proprietà Select quando le operazioni di cancellazione, inserire o aggiornare sono abilitati

Io non capisco perché sto ricevendo questo errore perché ho già fatto la stessa cosa su una pagina web diversa nel mio sito, tuttavia la tabella da cui i dati vengono letti in quel caso non ha chiavi estranee, questo sì. È per questo che sto ottenendo l'errore?

Se è importante, la proprietà AutoGenerateDeleteButton è impostata su True e sto utilizzando uno linqdatasource per recuperare i dati dal database.

Qualsiasi input sarebbe apprezzato :)

risposta

11

Alla fine ho dovuto selezionare tutti i dati (utilizzando l'opzione * nella procedura guidata DataSource), quindi rimuovere le colonne che non volevo per la visualizzazione in il GridView. Questo potrebbe essere un po 'inefficiente, ma ha funzionato.

1

Ho appena incontrato questo problema e ho trovato una soluzione e una spiegazione altrove.

L'istruzione Select restituisce un tipo Anonimo che potrebbe non essere mappato quando l'istruzione Delete/Update/Insert deve essere generata da LinqDataSource. La tabella di origine (linq) viene utilizzata per generare i metadati per l'operazione del database.

Dovremo vivere con la piccola perdita di prestazioni quando è necessario recuperare tutte le colonne nell'origine dati, ma viene eseguito un lavoro dietro le quinte. Me piace.

E, se si utilizza GridView, è necessario specificare la proprietà DataKeyNames sulle chiavi primarie dell'origine dati.

cristallino !? ;)

0

Certo, il problema è che è necessario includere la chiave primaria nella configurazione dell'origine dati e quindi contrassegnare come invisibile questa chiave primaria.