Question

Considérant l'architecture suivante:

  • un objet de base 'Entity'
  • un objet dérivé 'Entry: Base'
  • et un autre objet dérivé 'CancelledEntry: Entry'

Dans EntitySQL, je peux écrire ce qui suit:

[...] where it is of (only MyEntities.Entry) [...]

ne renvoie que les objets de type Entry et non Entity ou CancelledEntry.

Dans linq to sql, la commande suivante renvoie des objets de type Entry et CancelledEntry.

EntityContext.EntitySet.OfType<Entry>()

Quelle est la syntaxe / fonction à utiliser pour renvoyer uniquement les objets de type Entrée?

Était-ce utile?

La solution

Pourquoi n'appliquez-vous pas une méthode d'extension sur IQueryable < Entrée & Gt; appelé ApplyBaseEntryFilter () qui appliquerait ce filtre et renverrait un IQueryable < Entrée & Gt ;.

Voici un exemple de réutilisation de fragments de requête linq. Utilisation de méthodes d'extension sur IQueryable & Lt; Entité & Gt; est un excellent moyen de réutiliser les requêtes car vous devriez avoir besoin de copier et coller des fragments de requête autour de votre application. J'espère que cela vous aidera.

Autres conseils

Ok, j'ai trouvé une solution partielle:

EntityContext.EntitySet.OfType<Entry>().Where( obj => !(obj is CancelledEntry) )

C’est vraiment terrible, car si je crée un nouvel objet dérivé, je dois aller dans toutes les requêtes et ajouter une condition spécifique pour le supprimer.

Il doit y avoir une meilleure solution

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top