1. ホーム
  2. c#

[解決済み] C# Entity-Framework。モデルオブジェクトの.Findと.Includeを組み合わせるにはどうすればよいですか?

2022-04-22 10:52:45

質問

mvcmusicstoreの練習用チュートリアルをやっています。アルバムマネージャー(add delete edit)の足場を作成する際に気づいたことがあります。

私はコードをエレガントに書きたいので、これをきれいに書く方法を探しています。

参考までに、私はストアをより一般的なものにしています。

アルバム=アイテム

ジャンル=カテゴリー

アーティスト=ブランド

以下は、インデックスの取得方法です(MVCで生成)。

var items = db.Items.Include(i => i.Category).Include(i => i.Brand);

以下は、削除対象の項目を取得する方法です。

Item item = db.Items.Find(id);

最初のものは、すべてのアイテムを戻し、アイテムモデル内のカテゴリとブランドモデルに値を入れます。2番目のものは、カテゴリとブランドを入力しません。

どうすれば、2番目のものが検索を行い、中のものを取り込むように書けるでしょうか(できれば1行で)...理論的には、次のようなものです。

Item item = db.Items.Find(id).Include(i => i.Category).Include(i => i.Brand);

解決方法は?

を使用することができます。 Include() を最初に実行し、その結果得られたクエリから単一のオブジェクトを取得します。

Item item = db.Items
              .Include(i => i.Category)
              .Include(i => i.Brand)
              .FirstOrDefault(x => x.ItemId == id);