C# Entity-Framework: モデル オブジェクトで .Find と .Include を組み合わせるにはどうすればよいでしょうか? 質問する

C# Entity-Framework: モデル オブジェクトで .Find と .Include を組み合わせるにはどうすればよいでしょうか? 質問する

私は mvcmusicstore の練習チュートリアルを行っています。アルバム マネージャーのスキャフォールドを作成しているときに、あることに気づきました (追加、削除、編集)。

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

ちなみに、ストアをより汎用的にしています:

アルバム = アイテム

ジャンル = カテゴリ

アーティスト = ブランド

インデックスを取得する方法は次のとおりです (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);

ベストアンサー1

Include()最初に を使用し、結果のクエリから単一のオブジェクトを取得できます。

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

おすすめ記事