2010-08-01 7 views
0

Je me suis demandé s'il y avait un moyen de fournir un nom de table pour la requête linq au moment de l'exécution. Je suis intéressé par requête simple commeNoms de tables dynamiques avec Linq aux entités?

select * from @someTableName 

J'ai cherché beaucoup pour la réponse, mais n'a pas pu trouver aucune aide sur le net. Il y avait un poste sur MSDN -> link

Dave Russel a suggéré de le faire:

var p = ctx.GetType.GetProperty(oName).getValue(ctx,null) 

Mais à part obtenir la propriété avec la réflexion, je ne sais pas comment travailler le reste pour être capable d'exécuter des requêtes sur cette propriété comme:

from x in p select x; 
+0

IMO lorsque vous faites cela, vous manquerez la puissance de LINQ. Pourquoi ne pas utiliser du vieux SQL? – Steven

+0

J'ai besoin d'avoir un IQueryable comme résultat, car il sera nécessaire plus tard. – gixx

Répondre

1

Essayez la méthode ExecuteStoreQuery. Vous exécutez une requête SQL et obtenez ObjectResult. Veuillez noter que cette méthode est disponible uniquement dans Entity Framework v4.

+0

Il n'est pas du tout clair si il veut * vraiment * des noms de tables ou s'il veut des noms d'entités. Cette méthode utilisera les noms de table. Pour les noms d'entité, utilisez ESQL ou 'System.Linq.Dynamic'. –

+0

J'ai plusieurs tables avec différentes colonnes et elles sont toutes mappées à Entity Model. Donc, au moment de l'exécution, je choisis un nom de table et récupère tous les enregistrements de cette table particulière. Donc, tout ce que j'ai à l'exécution est le nom de la table, mais je ne sais pas comment l'utiliser afin de récupérer des données (besoin commandé IQueryable pour jqGrid). Est-ce que ExecuteStoreQuery ne doit pas être paramétré avant la compilation ou je fais quelque chose de mal ici? – gixx

+0

Oh et les noms d'entité sont les mêmes que les noms de tables dans le magasin de données. – gixx