Entity Framework - Wählen Sie bestimmte Spalten und Rückkehr stark typisierte ohne cast

Ich versuche, etwas ähnliches zu tun, um dieser Beitrag, wo ich nicht ziehen Sie wieder alle Spalten aus einer bestimmten Entität, aber mein framework verwenden inheritence und ich verliere Umfang der entity-Typ, nachdem es gegossen worden, um einen anonymen Typ.

Die Struktur meiner Entity Framework verfügt über eine Basis-Entität namens Aktion. Von hier aus habe ich zwei geerbt Wesenheiten Veranstaltung und Aktivität. Ich will zurück zu ziehen die letzten X Aktionen und übergeben Sie an meine stark typisierte Ansicht, die annimmt, eine Aktion, und von dort aus bestimmt, ob eine Aktivität oder ein Ereignis und macht die richtige Teilansicht.

if(Model.GetType() == typeof(Event))
{
  //render Event view
}
else if(Model.GetType() == typeof(Activity))
{
  //render Activity view
}

Ich ziehen kann, die letzten 10 als anonymer Typ und dann Darsteller:

var result = from a in new DataContext().Actions
             where a.UserId == someGuidValue
             select new { a.CreatedOn, a.Summary };

List<Action> list = result.AsEnumerable()
                          .Select(o => new Action {
                                           CreatedOn = o.CreatedOn, 
                                           Summary = o.Summary
                          }).ToList();

Allerdings, wenn ich übergeben Sie die neue Liste der Aktionen, um mein stark typisierte Ansicht, es verliert an Umfang, egal ob es eine Aktivität oder ein Ereignis, da es gegossen worden, als eine Aktion. Meine Frage ist, ohne daß die Diskriminator-Spalte, gibt es eine Möglichkeit zu casten jedes Element auf den richtigen Typ, oder bin ich da etwa falsch?

InformationsquelleAutor XVargas | 2009-10-29

Schreibe einen Kommentar