Comment puis-je retourner un objet datareader lors de l'utilisation d'Entity Framework 4?
Je veux définir une requête de base de données à l'aide de LINQ et mon EntityFramework contexte, mais je ne veux pas d'entités retournées; je veux un datareader!
Comment puis-je faire cela? C'est pour l'exportation de lignes d'un fichier CSV.
Acclamations, Ian.
Pourquoi ne pas simplement obtenir le sérialiser des objets et des personnes vers un fichier CSV?
Je ne sais pas combien d'objets il y aura donc un datareader arrêts de la mémoire du serveur de remplissage.
De en cherchant un peu, vous ne pouvez pas être en mesure d'y accéder facilement, il y a un ExecuteDbDataReader méthode, mais il est protégé de sorte que vous ne devriez pas être en train d'essayer d'obtenir une prise de. Si cela n'est pas fait très souvent et/ou si la requête n'est pas trop cher, vous pouvez essayer de pagination les résultats de votre requête pour s'assurer que vous n'avez pas trop d'objets dans la mémoire à la fois.
Je ne sais pas combien d'objets il y aura donc un datareader arrêts de la mémoire du serveur de remplissage.
De en cherchant un peu, vous ne pouvez pas être en mesure d'y accéder facilement, il y a un ExecuteDbDataReader méthode, mais il est protégé de sorte que vous ne devriez pas être en train d'essayer d'obtenir une prise de. Si cela n'est pas fait très souvent et/ou si la requête n'est pas trop cher, vous pouvez essayer de pagination les résultats de votre requête pour s'assurer que vous n'avez pas trop d'objets dans la mémoire à la fois.
OriginalL'auteur Ian Warburton | 2011-05-08
Vous devez vous connecter pour publier un commentaire.
Cette question est d'environ EF 4, mais pour quelqu'un d'autre avec EF 6 ou plus, vous pouvez utiliser le AsStreaming() la méthode d'extension.
http://msdn.microsoft.com/en-us/library/dn237204(v=vs. 113).aspx
Pour quelqu'un qui est comme moi et n'a aucune idée de ce que AsStreaming ()", voici la seule référence passant, j'ai pu trouver: entityframework.codeplex.com/.... Il semble y avoir aucun autre document n'importe où.
Cette méthode est obsolète et en l'appelant n'a aucun effet car les requêtes LINQ sont streaming par défaut. Je suppose que c'est uniquement pour EF6, cependant. Vous devriez toujours utiliser Ladislav réponse à EF4.
OriginalL'auteur jhilden
Si vous avez besoin de cela, vous êtes plus probablement de faire quelque chose d'inattendu. Simple itération matérialisé résultat de la requête doit être ce dont vous avez besoin - est de l'ORM. Si vous ne l'aimez pas utiliser
SqlCommand
directement.DbContext API est simplifiée, et de ce fait, il ne contient pas beaucoup de fonctionnalités disponibles dans l'API ObjectContext. L'accès aux données reader est l'un d'entre eux. Vous pouvez essayer de convertir
DbContext
àObjectContext
et l'utilisation la plus complexe de l'API:Mais pure ADO.NET manière est beaucoup plus facile et plus rapide, car le premier exemple utilise encore la cartographie de la requête SQL de la requête:
OriginalL'auteur Ladislav Mrnka