2009-11-19 4 views
1

Je développe un projet dans lequel les utilisateurs doivent créer des requêtes de rapport à l'aide d'instructions Linq complexes pour générer des ensembles de données. La meilleure façon de compiler ces requêtes générées par les utilisateurs et de les exécuter consiste à utiliser l'objet CSharpCodeProvider pour créer un assembly, puis stocker le résultat dans un blob de base de données.Stockage des assemblys de génération de rapports (.net) dans une base de données

Y a-t-il un problème avec ce processus? De même, comment puis-je limiter les autorisations de l'assembly utilisateur pour autoriser uniquement l'exécution sur un ensemble limité d'objets que je fournis?

Merci!

+0

construisez-vous un moteur de reporting par hasard? –

+0

Oui, mais basé sur Linq plutôt que SQL. –

Répondre

1

Vous ne devriez pas avoir à enregistrer les requêtes en tant qu'ensemble généré. Une façon plus simple serait d'enregistrer le SQL exécuté sur la base de données pour une utilisation future. Utilisez la méthode GetCommand de DataContext pour obtenir le SQL et le conserver en tant que requête "enregistrée".

+0

Pas exactement ce que je cherche, mais c'est une très bonne idée. Dans ce cas, il s'agirait d'eSQL puisque je cours contre l'EF, mais je vais y revenir plus tard et je pourrais décider d'y aller. –

+0

En fait, avec EF c'est toujours SQL qui est exécuté sur SQL db. eSQL est utilisé pour interroger les Entités. –

Questions connexes