J'ai un ServiceOperation pour interroger les éléments disponibles à un certain utilisateur à un certain moment. En bref, ce Methode fait:Est-il possible de manipuler QUELQUES entités dans un ServiceOperation retournant un IQueryable
var fullResult = from i in Items where ... select i; //get ALL possible items where...,
Disons que cela renvoie les éléments {A, B, C, D}. Une deuxième requête filtre les éléments auxquels l'utilisateur appelant a accès.
var clientResult = from ci in fullResult where (privilege's and schedule's are true)
Cet acarien aboutit à {A, C} et est retourné. Le résultat côté client est: seule la liste des éléments auxquels le client a accès est affichée. Cela peut être gênant puisque vous ne savez pas si vous avez fait une erreur dans la recherche, ou l'article n'est tout simplement pas disponible pour le moment. Ce que je voudrais être en mesure de faire est d'afficher tous les résultats possibles au client {A, B, C, D}, mais FLAG B et D dans ce cas comme indisponible.
Mon entité a déjà une propriété isReadOnly que je pourrais utiliser. Est-ce que je peux écrire une requête non seulement pour filtrer, mais aussi marquer tous les résultats restants en lecture seule? Un résultat idéal serait {A, B.isREadOnly = vrai, C, D.isReadOnly = vrai}
Ou ai-je atteint la limite de ce qui est faisable et dois-je écrire une méthode web WCF traditionnelle, créant un classe séparée, renvoyant une liste de résultats?
PS: cette propriété « isReadOnly » est utilisé que pour cela, je ne me dérange pas d'être changé dans le DB du tout
Merci pour tous les pointeurs
Andreas
ok, dans ce cas, j'ai un suivi Q. Je devrais créer une entité étendue en plus de ma DB entité mappée dans mon modèle (c'est-à-dire Entité A (DB), AExtra (MyOwnEntity). Pour ce faire, mapper la requête dans un nouveau type, mais comment gérer les modifications? Je suppose que je dois faire un peu de magie dans l'intercepteur de modification Mais que dois-je faire de plus pour sauvegarder les modifications? à ? –
Andreas
oui, vous perdez le suivi des modifications lorsque vous faites cela, alors quand vous avez besoin de mettre à jour A, vous devez le récupérer hors du contexte, définissez ses propriétés à partir de AExtra et enregistrez-le.Si le contexte est toujours là, il peut vous renvoyer une version en cache, donc récupérer l'entité et définir les propriétés ne serait pas si inefficace - essayez-le et regardez sql profiler ou quelque chose pour voir les requêtes. J'ai toujours juste utilisé des services de wcf réguliers avec backend de framework d'entité donc je ne peux pas dire s'il y a un moyen dans les services de données que vous pouvez le faire différemment, désolé – kmp
Je vais essayer, il semble être le seule option. Puisque je ferme cette opération avec un autre appel de ServiceOperation, perdre le changement d'acarien de suivi n'importe pas du tout dans ce cas. Merci. – Andreas