私はEntity Frameworkエンティティインスタンスの子を単純なクラスに変換しようとしていますが、いくつかの問題があります。ここに私の関連するコードは次のとおりです。エンティティフレームワークで単一のインクルード子エンティティ(1対1)を単純オブジェクトに変換するにはどうすればよいですか?
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();
これはArgumentException
エラーでSurveySearchResult
を設定する行に失敗しています。これは、Blog.Survey
が技術的にnullableであるためだと私は信じていますか?私がb.Survey.Id
をnullでないintにキャストすると、私は最終的に状態が:AggregateException: One or more errors occurred. (Unable to cast object of type 'System.String' to type 'Models.Blog'.)
となってしまいます。
Blog
との関係が1対1であるため、リストの子と同様にラムダ式を使用して単純なオブジェクトに変換することはできません。運と
SurveySearchResult = (b.Survey => new SurveySearchResult{ ...
し、手動でインラインオブジェクトの上に変換するために、ヘルパー関数を使用して試してみました:私はこのような何かを試してみました。何も動作していないようです。私が気付いていないこれを行うための標準的な方法はありますか?