Je rencontre un problème lors du passage d'une liste d'objets définis par l'application aux services RIA. Je reçois une erreur de compilation disant que "les filtres de paramètres d'erreur" de l'entrée d'opération de domaine "GetPagedExams" doivent être l'un des types sérialisables prédéfinis. "ne peut pas passer la classe de collection en tant que paramètre aux services RIA
est ici la requête dans le DomainService:
[Query]
public IQueryable<ExamEntity> GetPagedExams(int first, int pageSize, List<FilterOptions> filters, List<string> sortDescriptions)
{
return Context.Exams.GetPagedExams(first, pageSize, filters, sortDescriptions).Data.AsQueryable();
}
Les options de filtre classe est définie comme:
[DataContract]
[Serializable]
public class FilterOptions
{
public enum FilterAction
{
Equals,
NotEquals,
LessThan,
LessThanOrEquals,
GreaterThan,
GreaterThanOrEquals,
Like,
NotLike,
IsNull,
IsNotNull
}
[DataMember]
[Key]
public string FieldName
{ get; set; }
[DataMember]
public FilterAction FilterOp
{ get; set; }
[DataMember]
public object FieldValue
{ get; set; }
}
Ajout des attributs DataContract et DataMember n'a pas aidé.
Je dois transmettre un nombre variable de contraintes de filtrage qui seront assemblées dans le cadre d'une requête SQL côté serveur, donc une liste d'objets est presque nécessaire. (Oui, il s'agit de SQL brut et la base de données peut être SQL Server ou Oracle.) Je ne peux pas utiliser LINQ et le client Silverlight ne peut pas savoir quelle base de données j'utilise.)
Des suggestions? Je suis sur le point d'essayer de passer une sérialisation XML du client et de le réhydrater sur le serveur. Ce n'est vraiment pas mon option préférée ....
C'était une requête de travail quand je transmettais une seule chaîne pour un filtre, plutôt qu'une collection. Donc, je sais que le problème est strictement avec la collection personnalisée.
Merci. Pas la réponse que je voulais, mais c'est une réponse. –
Je suis entièrement d'accord (que ce n'est pas la réponse que beaucoup de gens, y compris moi-même), comme je l'avais essayé aussi. Le fil semble indiquer que MS peut supprimer la limitation. – Timores
Des nouvelles si la limitation a été supprimée? – SteveC