Domanda

Riscontro uno strano errore durante l'utilizzo di linq-to-sql con i servizi dati ado.net. Ho una semplice applicazione Silverlight che si collega a un database remoto. Ho prima aggiunto la classe linq-to-sql e trascinato una tabella sul designer. Quindi ho aggiunto un servizio dati ADO.NET, aggiornato il riferimento DataService per puntare al contesto dei dati L2S.

Compilato senza problemi.

Quando apro il servizio in IE ricevo immediatamente un errore, quindi aggiungo il seguente attributo al servizio dati:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]

Questo fa apparire il messaggio di errore dettagliato:

  

Il messaggio di eccezione è "Sul tipo di contesto di dati" DataClasses1DataContext ", esiste una proprietà IQueryable superiore" table1 "il cui tipo di elemento non è un tipo di entità. Assicurarsi che la proprietà IQueryable sia di tipo entità o specificare l'attributo IgnoreProperties sul tipo di contesto dati per ignorare questa proprietà

questo accade a qualsiasi tabella di database che utilizzo nel designer L2S!

Che cos'è questo errore e perché lo ricevo?

È stato utile?

Soluzione

Dovrai decorare le tue classi con l'attributo DataServiceKey.

Maggiori dettagli sul blog di Marc qui e un blog MSDN qui (quest'ultimo parla di molte o molte relazioni, ma copre l'attributo DatServiceKey).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top