J'essaie de créer un système de génération de rapports générique afin que je puisse ajouter des rapports à mon programme à la volée, plutôt que d'émettre une nouvelle version du programme chaque fois que je dois ajouter un rapport.
Actuellement, je l'ai en partie travailler;
Mon rapport personnalisé SQL est stocké dans une table, avec le nom du rapport. Le nom du rapport est utilisé pour les boutons sur lesquels l'utilisateur doit cliquer, quand il clique sur le bouton, je veux que le SQL s'exécute et soit lié à un gridview, donc c'est aussi générique que possible.Entity Framework Custom SQL Query renvoyant le type générique
Cela semble être là où les problèmes viennent cependant. Obtenir le SQL et l'exécuter est bien, mais le lier à un gridview semble impossible, je reçois seulement une colonne, appelée Column, qui affiche 1 row avec une valeur de System.Object.
Je pense que le problème est parce que je suis de retour des données de plusieurs tables, à savoir
SELECT c.CertificateName, e.EntityName,
ce.CertificateDate, ce.CertificateExpiry, ce.CertificateNumber
FROM FCERTSTest.dbo.CertificateEntries ce
INNER JOIN FCERTSTest.dbo.Certificates c
ON c.CertificateID = ce.Certificate_ID
INNER JOIN FCERTSTest.dbo.Entities e
ON e.EntityID = ce.Entity_ID
WHERE FirstNotificationSent = '1'
J'utilise actuellement
using (DBContainer db = new DBContainer())
{
grid.DataSource = db.Database.SqlQuery<dynamic>(SQLCommand).ToList();
}
J'ai essayé de remplacer dynamic
avec object
et obtenir la même problème ... Je comprends que la meilleure solution serait d'avoir une classe personnalisée et de remplacer dynamic
avec cette classe personnalisée, mais alors je perds les avantages d'être générique car un rapport différent peut ne pas retourner les mêmes résultats et j'aurais besoin d'une nouvelle classe faite sur commande ...
Ahh, merci. Je pensais que cela pourrait être le cas. J'ai fini par utiliser un 'SqlDataAdapter' comme un correctif temporaire. Je vais devoir le rendre plus permanent maintenant. Y a-t-il quelque part dans les documents EF qui explique/couvre le manque de support pour les requêtes dynamiques? – Trent
[documentation] (http://msdn.microsoft.com/fr-fr/library/gg696545%28v=vs.103%29.aspx) ne parle que des types dont les propriétés correspondent aux colonnes du jeu de résultats. –