2009-09-19 8 views
2

J'ai besoin de choisir parmi différents niveaux de tables de départements, c'est-à-dire Dept1, Dept2, Dept3, ect. [1] en fonction du niveau de reporting choisi par l'utilisateur. Comment puis-je exprimer dynamiquement la 'table' à partir de laquelle je choisis un paramètre de chaîne donné, qui est le nom de la table?Nom de la table dynamique dans LINQ pour les entités

[1] Points faciles (laisse parler) pour n'importe qui qui peut m'aider à sortir de ce gâchis, plus profond que la question exposée. RUPTURE DE NOUVELLES: On dirait que je vais avec une construction 'switch/case'. Je suis fatigué de me pencher sur des non-solutions idiotes, et le premier intelligent que j'ai trouvé ne fonctionne pas assez facilement (sans les générations, le dévouement monastique). Les besoins du client viennent avant le mien.

+0

C'est un très mauvais façon d'organiser les données, mais je soupçonne que vous arrivez à comprendre cela maintenant. –

+1

Je l'ai compris depuis le collège, mais je ne peux pas toujours utiliser mes propres créations dès le départ. :-( – ProfK

+0

-1 pour le vitriol inutile et les tentatives de phrasé astucieux ... Restez sur la bonne voie, s'il vous plaît – Odrade

Répondre

1

Je ne crois pas que l'EF ait un équivalent de GetTable de Linq-> SQL mais j'ai trouvé this post sur une éventuelle implémentation de GetEntitySet ainsi qu'une implémentation simple que je pourrais utiliser.

+0

Il y a une bonne solution candidate sur ce poste, se noyant dans une mer noire d'une stupidité et d'une densité telles qu'on n'en voit que dans les métaux radioactifs. – ProfK

0

Avez-vous la possibilité de changer le schéma? Je suppose que vous posez cette question parce que vous ne le faites pas, mais si vous le faites, il pourrait être plus facile d'avoir une table Department qui définit un nom de département et son ID. Ensuite, vous pouvez avoir une seule table avec les entités que vous recherchez et une clé étrangère pointant vers un département.

Ainsi, si les entités que vous essayez d'interroger des employés, vos tables pourrait ressembler à ceci:

Department 
------------ 
ID  int 
Name text 

Employee 
-------------------- 
ID    int 
Name   text 
DepartmentID int 

Ensuite, votre requête pourrait ressembler à ceci:

var Employees = from emp in db.Employee.Include("Department") 
       where emp.Department.Name == "Sales" 
       select emp; 
+0

Je peux changer le schéma, mais seulement plus tard, avec une réécriture incrémentielle Je ne peux pas le changer aujourd'hui pour résoudre ce problème. – ProfK

Questions connexes