1 votes

Est-ce un bug? : Je reçois "Le type ... n'est pas un type complexe ou un type d'entité" dans mon service de données WCF en utilisant le fournisseur Reflection

Lors de l'invocation d'une requête sur le service de données, je reçois ce message d'erreur à l'intérieur du flux XML :

    Internal Server Error. The type 'MyType' is not a complex type or an entity type.

Lorsque j'utilise l'exemple décrit ici dans l'article "How to: Create a Data Service Using the Reflection Provider (WCF Data Services)" http://msdn.microsoft.com/en-us/library/dd728281(v=VS.100).aspx cela fonctionne comme prévu.

J'ai créé le service dans un projet web .NET 4.0. Ma classe de contexte de données renvoie un objet de requête qui est dérivé de LINQExtender (http://linqextender.codeplex.com/). Lorsque j'exécute l'objet de requête dans un test unitaire, cela fonctionne comme prévu.

Mon type d'entité est défini comme suit :

[DataServiceKey("Id")]
public class Accommodation
{
    [UniqueIdentifier]
    [OriginalFieldName("EntityId")]
    public string Id { get; set; }

    [OriginalFieldName("AccoName")]
    public string Name { get; set; }
}

(les attributs UniqueIdentifier et OriginalFieldName sont utilisés par LINQExtender)

Est-ce que quelqu'un sait s'il s'agit d'un bug dans les services de données WCF ou si je fais quelque chose de mal ?

0voto

Robert MacLean Points 18288

Il existe un bug connu dans .NET 4 qui est similaire au problème que vous avez décrit (comme vous avez obscurci MyType vous ne pouvez pas être sûr à 100%).

De Ptatik Patel (Microsoft) :

Il s'agit d'un problème connu avec les Services de données WCF. Comme l'a dit Joe, pour que cela fonctionne, vous devez désactiver la génération de proxy - assez mauvais. Désolé, je n'ai pas de meilleure réponse pour le moment, mais il est trop tard pour corriger cela dans VS 2010 RTM.

0voto

Doobi Points 4203

Il y a une solution pour cela :

http://www.sellsbrothers.com/posts/details/12665

0voto

David Burg Points 1

Vous ne pouvez pas utiliser le type de chaîne pour le champ ID. Cela provoque l'erreur "pas un type complexe ou un type d'entité" que vous obtenez. Essayez d'utiliser un int, et assurez-vous que l'int est unique pour chaque entité dans votre requête. Par exemple, vous pouvez calculer la valeur de hachage pour votre ID de chaîne et utiliser cela comme ID int à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X