J'ai une structure d'héritage complexe dans mon modèle de données. Une majorité de classes dans mon modèle (qui est conçu dans VS 2010 avec un DB généré par la suite) sont dérivées de 3 classes de base. Et seulement ces 3 classes peuvent être trouvées parmi les membres du contexte. Comment puis-je utiliser toutes les classes dérivées?Comment interroger un conteneur d'entités Entity Framework pour les objets de classes d'entités dérivées?
Répondre
Vous pouvez interroger des sous-types comme ceci:
var horses = from animal in ctx.AnimalSet
where animal is Horse
select animal as Horse;
Cela ira chercher tous les objets Cheval de l'ensemble des animaux dans mon contexte examle.
Si vous souhaitez interroger sur les propriétés spécifiques sous de type que vous pouvez faire:
var horses = from animal in ctx.AnimalSet
where animal is Horse //edit, this line is not needed
let horse = animal as Horse
where horse.TracksWon > 3
select horse;
Tout cela sera traduit en SQL, donc il n'y a pas de frais généraux comme aller chercher tous les animaux et le filtrage sur le côté client, il fonctionne Comme il se doit.
HTH
genre de réponse de Roger d'œuvres, mais pourrait ne pas vous donner les résultats que vous voulez. Il est généralement préférable d'utiliser OfType()
. Pour utiliser ses exemples:
var horses = from animal in ctx.AnimalSet
where animal is Horse
select animal as Horse;
Cela rend horses
de type IQueryable<Animal>
. Mais dans ce cas, vous voulez probablement IQueryable<Horse>
, que vous pouvez obtenir par:
var horses = from animal in ctx.AnimalSet.OfType<Horse>()
select animal;
... ou tout simplement:
var horses = ctx.AnimalSet.OfType<Horse>();
De même, la deuxième requête de Roger peut être réécrite comme:
var horses = from horse in ctx.AnimalSet.OfType<Horse>()
where horse.TracksWon > 3
select horse;
Ce qui est plus facile à lire, mais change le type de résultat en IQueryable<Horse>
.
- 1. Iterator pour un conteneur personnalisé avec des classes dérivées
- 2. Comment interroger Entity Framework pour un utilisateur dans aspnet_Users?
- 3. Entity Framework - Association des entités dérivées
- 4. Comment interroger Entités dans Entity Framework 4
- 5. Comment utiliser LINQ-to-Entity pour interroger des objets contenus
- 6. Entity Framework Objets POCO
- 7. Entity Framework et objets temporaires
- 8. Entity Framework - Objets enfants par défaut
- 9. Entity Framework (Classes d'entités) Serialization
- 10. Exemples d'utilisation de F # pour interroger Entity Framework
- 11. enfant Supprimer les objets dans Entity Framework
- 12. vtables pour les classes dérivées, concrètes,
- 13. Entity Framework: Suppression de plusieurs objets requête
- 14. Entity Framework, Héritage et Namespacing
- 15. Génération automatique de classes de métadonnées pour Entity Framework
- 16. Design Pattern: interface uniforme pour les classes dérivées partiellement supportées
- 17. Les classes dérivées comme valeur de retour
- 18. Classes dérivées et singleton
- 19. Classes Java dérivées de Hibernate pour les tables
- 20. Classes internes avec ADO.NET Entity Framework
- 21. Classes dérivées UIscrollview
- 22. Supprimer des objets dans Entity Framework
- 23. Fournisseur Entity Framework pour Oracle
- 24. Visualisation des classes dérivées en C#
- 25. La duplication ennuyeuse dans les classes dérivées
- 26. Entity Framework 4 Supprimer plusieurs objets (RemoveAll)
- 27. C#: config XML lecture manuellement pour les classes dérivées
- 28. Déclaration des Enums dans les classes dérivées
- 29. Quels types de requêtes sont les mieux adaptés pour interroger le modèle conceptuel dans Entity Framework?
- 30. SetUp dans les classes dérivées avec NUnit?