Ich versuche, ein Kind einer Entity Framework-Entity-Instanz in eine einfache Klasse zu konvertieren, stoße aber auf einige Schwierigkeiten. Hier ist mein entsprechender Code:Wie konvertiert man eine einzelne enthaltene untergeordnete Entität (eins-zu-eins) in ein einfaches Objekt in Entity Framework?
model.BlogSearchResults = await _context.Blog
.Include(b => b.Survey)
.Select(b => new BlogSearchResult
{
Id = b.Id,
Title = b.Title,
Summary = b.Summary,
SurveySearchResult = b.Survey == null ? null : new SurveySearchResult
{
Id = b.Survey.Id,
Title = b.Survey.Title,
Description = b.Survey.Description
}
}).ToListAsync();
Diese auf der Linie versagt, die SurveySearchResult
mit einem ArgumentException
Fehler setzt. Ich glaube, das ist, weil Blog.Survey
technisch Nullable ist? Wenn ich b.Survey.Id
in ein non-nullable int umwandeln, erhalte ich einen Fehler, der besagt: AggregateException: One or more errors occurred. (Unable to cast object of type 'System.String' to type 'Models.Blog'.)
.
Seit Survey
hat eine Eins-zu-Eins-Beziehung mit Blog
Ich kann es nicht in ein einfaches Objekt mit Lambda-Ausdrücke konvertieren, wie Sie mit einer Liste Kind unter Umständen. Ich habe so etwas wie dies versucht:
SurveySearchResult = (b.Survey => new SurveySearchResult{ ...
ohne Glück und haben mit einer Hilfsfunktion versucht, das Objekt manuell konvertieren über in-line. Nichts scheint zu funktionieren. Gibt es einen Standardweg, von dem ich nichts weiß?