2009-03-06 7 views
18

Je rencontre une erreur bizarre lors de l'utilisation de linq-to-sql avec les services de données ado.net. J'ai une application Silverlight simple qui se connecte à une base de données distante. J'ai d'abord ajouté la classe linq-to-sql et fait glisser une table sur le concepteur. Ensuite, j'ai ajouté un service de données ADO.NET, mis à jour la référence DataService pour pointer vers le contexte de données L2S.Services de données ADO.NET avec Linq-to-SQL

Compilé sans problème.

Quand j'ouvre le service dans IE je reçois immédiatement une erreur si j'ajoute l'attribut suivant au service de données:

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

Cela porte le message d'erreur détaillé:

L'exception message est 'Sur le type de contexte de données' DataClasses1DataContext ', il existe une propriété IQueryable supérieure' table1 'dont le type d'élément n'est pas un type d'entité. Assurez-vous que la propriété IQueryable est de type d'entité ou spécifier les attributs IgnoreProperties du type de contexte de données ignorer cette propriété

cela arrive à une table de base de données que j'utilise dans le concepteur L2S!

Quelle est cette erreur et pourquoi je l'obtiens?

+0

Vous pouvez accéder à chacun des points de terminaison à l'aide de http: // localhost/{ServiceName}/{EndPointName} – jdiaz

Répondre

21

Vous devrez décorer vos classes avec l'attribut DataServiceKey.

Plus de détails sur le blog de Marc here, et un blog MSDN here (ce dernier parle de plusieurs relations, mais il couvre l'attribut DatServiceKey).

+0

qui explique beaucoup mais pourquoi ne me montre-t-il pas les entités au format XML? Il dit juste DEFAULT table1. J'ai même utilisé config.SetEntitySetAccessRule ("table1", EntitySetRights.All); – jdiaz

+0

De même, si aucune clé primaire n'est définie sur la table, comment puis-je connaître la propriété à définir comme DataServiceKey? – jdiaz

Questions connexes