2012-11-24 8 views
5

Wie Sie in der folgenden Abbildung sehen, habe ich ein Modell mit einer Basisklasse "Person" und beide Entitäten "Kunde" und "Techniker" erben die Basisklasse.Suche nach einem geerbten Objekt nach ID - Entity Framework

Jetzt habe ich folgendes Problem. Wenn ich versuche, die Methode Find zu verwenden, um ein Objekt der abgeleiteten Klasse Kunde mit gegebener ID zu erhalten, sagt es mir, dass OfType<TResult> eine Methode ist und in diesem Kontext nicht gültig ist.

public Kunde GetById(int id) 
{ 
    return dbModel.PersonMenge.OfType<Kunde>.Find(id); 
} 

Ich habe auch versucht die OfType fallen zu lassen, aber es sagt mir offensichtlich, dass das Objekt Person nicht implizit Kunde umgewandelt werden kann.

Gibt es etwas, das ich hier vermisse?

Antwort

1

Es ist nur zwei Klammern:

OfType<Kunde>() 

Aber dann können Sie Find nicht mehr verwenden, weil das ein Verfahren zur Herstellung DbSet ist. Sie müssen Single oder dbModel.PersonMenge.Find(id) as Kunde; verwenden.

+0

Danke, nachdem Sie dbModel.PersonMenge.Find (id) als Kunde verwendet haben; alles funktioniert einwandfrei. – HansWurs