2017-10-12 6 views
0

Ich habe eine Parent Klasse, die eine Child hat, ich bin mit TPH, und nur DBSet<Parent> im DBContext auszusetzen. Jetzt möchte ich die Where(x = x.PropertyInChild) auf der DBSet<Parent> verwenden, wo x ist eine Child, Casting x während des Prozesses enthüllt den folgenden Fehler.Entity Framework: Umgang mit childern mit DBSet <Parent>

LINQ to Entities unterstützt nur das Erstellen von EDM-Primitiven oder Enumeration Typen.

+0

Können Sie Ihre Eltern- und Kindklassen posten? – akerra

Antwort

0

Sie müssen die abgeleiteten Entitäten implizit in die OnModelCreating-Methode einschließen.

public class SampleContext : DbContext 
{ 
    public DbSet<Parent> Parents { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Child>(); 
    } 
} 

Um geordnete Entitäten Sie benötigen abfragen OfType < TEntity> Methode zu verwenden.

var parents = context.Parents.OfType<Child>().ToList(); 
+0

Gibt es eine Möglichkeit, es dynamischer zu machen? Eine Möglichkeit, context.Parents automatisch erkennen den Typ und verhalten sich konsequent? – Sisyphus

+0

@sisyphus was meinst du mit Dynamik ?? –

+0

Ich meinte, ich sollte eine gegossene x übergeben, dann würde die EF dynamisch ihren Typ erkennen und daher muss ich nicht die OfType Methode verwenden. – Sisyphus

Verwandte Themen