2011-06-02 4 views
2

Existe-t-il un moyen de définir dynatiquement le nom de la table afin de ne pas avoir à faire plusieurs appels si la table que j'accède est différente selon les conditions? Je ne veux pas avoir un if/else pour chaque table à laquelle j'accède si je peux utiliser un nom de variable à la place.Utiliser la variable comme nom de table d'entité

using (Entity ctx = new Entity()) 
{ 
    dbTableVal = "EntityTables"; 
    var query = from d in dbTableVal 
       where d == "Yes" 
       select d; 
} 

Répondre

1

Je suppose que non, car la table elle-même définit également le type de IQueryable<T> retourné. Il n'est même pas possible avec ESQL (qui a une syntaxe de chaîne) de définir une requête générique dans laquelle vous ne connaissez pas le type d'ensemble de résultats.

+0

Oui, j'ai essayé de faire ce travail en tant que variable, mais j'ai trouvé que je ne faisais que trois tables, donc j'ai utilisé un commutateur au lieu d'essayer d'utiliser une variable. –

0

vous pouvez créer une fonction qui accepte un "objet" et "type" et retourne un IQueryable?

par exemple:

private IQueryable GetQuery(object Table, Type t) 
{ 
    var query = from d in ((t)Table) where d == "Yes" select d; 
    return query; 
} 

!!! NON TESTÉ donc peut-être besoin de faire une variation sur cela, mais quelque chose dans ce sens pourrait fonctionner pour vous ....

+2

Je pense que votre signature de méthode devrait être privée IQueryable GetQuery (table d'objets) si vous voulez utiliser le type pour faire un cast comme ça. – dkackman

Questions connexes