Question

J'ai écrit une application utilisant LINQ to SQL qui présente une forme Web dans une base de données. J'absact la suite LINQ to SQL en utilisant un modèle référentiel.

Ce référentiel a les méthodes de base:. Get (), Save (), etc

En tant que développement du projet, je devais chiffrer certains champs du formulaire. C'était trivial, comme je viens d'ajouter les appels de cryptage aux méthodes Get (), Save () dans le référentiel.

Maintenant, je veux mettre une couche oData dessus, pour permettre l'extraction RESTful à partir de MS Excel 2010 (quand il sort). J'ai ce travail, après quelques bute sur des messages d'erreur inutiles, etc.

Cependant, de toute évidence, les champs chiffrés sont toujours cryptées. Mon modèle référentiel aurait déchiffré ces pour moi. Pour autant que je sache, je dois directement lier mon service oData au contexte LINQ to SQL pour le schéma, etc. au travail - à moins que j'entrer dans un monde de douleur (toutes les URL appréciées).

Est-il possible que je peux insérer ma couche de cryptage / décryptage dans la demande donc le déchiffrement se fait « à la volée »? Je regardais la OnStartProcessingRequest () surcharge de DataService, mais cela ne semble pas utile.

Était-ce utile?

La solution

Vous ne devez pas lier directement à L2S pour exposer un service OData. Vous pouvez écrire votre propre classe de contexte et utiliser le fournisseur de réflexion directement en déduire un modèle à partir des propriétés IQueryable votre classe de exposent les.

Note:. Les L2S approche que vous utilisez est juste en utilisant aussi le fournisseur de réflexion

La clé est tout simplement envelopper les queryables du L2S DataContext ( voir cette ) afin que vous puissiez vous injecter dans l'exécution de la requête:

  1. acheminera l'expression générée à L2S et exécuter la requête dans la base de données.
  2. Comme les résultats sont renvoyés de L2S vous pouvez les énumérer en mémoire faisant le déchiffrement à la volée, avant de les retourner aux services de données.

Pour plus d'informations sur les fournisseurs de réflexion consulter ce poste .

Hope this helps

Alex James

OData / Data Service Gestionnaire de programmes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top