2009-03-27 8 views
0

Je fais appel manuellement une procédure stockée à l'aide d'un Entity Framework EntityConnection comme ceci:Comment facilement convertir un objet DbDataReader en quelque chose d'utile?

DbConnection storeConnection = entityConnection.StoreConnection; 
DbCommand command = storeConnection.CreateCommand(); 
command.CommandText = "sp_GetMyComplexData"; 
command.CommandType = CommandType.StoredProcedure; 

DbDataReader reader = command.ExecuteReader(); 

La raison est que le cadre de l'entité ne supporte pas facilement des entités qui ne correspondent pas directement aux tables ou vues. J'ai trouvé cet article (http://dotnet.dzone.com/news/mapping-stored-procedure), mais il nécessite l'édition du XML, que je voudrais éviter.

Dans mon cas, je suis juste en train d'exécuter une requête qui joint deux tables en utilisant un LEFT JOIN. La raison de cela est parce que j'essaye de lier les résultats à un Telerik RadGrid, qui ne soutient pas les exportations de données hiérarchiques, mais semble soutenir des exportations groupées de données.

Le problème est, comment puis-je convertir l'objet DbDataReader en quelque chose d'utile que je peux lier à mon RadGrid? J'ai passé des objets uniques, ou des objets IQueryable dans mes méthodes DAL. Des idées? Merci d'avance?

EDIT:

Je ne ai besoin des données. Je n'ai pas besoin de faire d'insertions, de mises à jour, de suppressions après. C'est une vue en lecture seule.

Répondre

1

Je ne connais pas RadGrid, mais vous pouvez lier ce lecteur de données aux contrôles de grille intégrés tels que GridView. Vous ne pouvez pas l'utiliser pour les mises à jour, les suppressions ou les insertions.

Sinon, vous pouvez le transformer en datatable en utilisant la méthode .Load() datatable. Mais vous devrez toujours savoir comment insérer/mettre à jour/supprimer manuellement.

+0

Je remercie table.Chargement (lecteur); est ce que je cherche. Je vais vous dire comment ça se passe ... –

+0

Ouais c'était exactement ce dont j'avais besoin. Merci Joel! –

Questions connexes