2016-04-26 18 views
1

エンティティフレームワークを介して設定された多数のリレーションシップからデータを取得する最善の方法について質問があります。のは、この項目のことが可能で多対多の関係であることを言ってみましょうAsp.net MVC Entity Framework多対多リレーションシップでデータを取得する最も良い方法

  1. アイテム
  2. カテゴリー

簡単な例として、のは、私は2つのモデルを持っているとしましょう多くのカテゴリを持ち、カテゴリは多くのアイテムに属することができます。

私が理解する限り、これはエンティティフレームワーク自体によって処理されるため、アイテム - カテゴリ関係の3番目のモデルを作成する必要はありません。したがって

、すべてが設定されていると私は、このようなコードで終わるモデルの両方に足場を使用した後:

public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 

    public System.Data.Entity.DbSet<TShirtWSMVC.Models.Item> Items { get; set; } 

    public System.Data.Entity.DbSet<TShirtWSMVC.Models.Category> Categories { get; set; } 

今、私は私のビューに各項目を表示すると、その関連カテゴリ。 私はのようなコードができることを承知しています:私はまた、データベースのコンテキストクラス内部AllCategoriesForItem(int itemID)という名前のメソッドを作ることができ

dbContext.Database.SqlQuery(//Query the conjunction table here) 

もっと良いオプションがあるのですか?たとえば、dbContext.Items.ToList()を使用すると、各アイテムのカテゴリが自動的に取得されるため、各アイテムのカテゴリリストはnullになりません。

また、ItemCategoryテーブルをアプリケーションのDBコンテキストに表示する方法がありますか?

ありがとうございました。

答えて

1
namespace YourApp.Controllers 
{ 
    public class YourController: Controller 
    { 
     //your db context 
     private ApplicationDbContext db = new ApplicationDbContext(); 

     public ActionResult Index() 
     { 
      var list = db.Items.Include(c => c.Categories); 
      return View(list.toList()); 
     } 
    } 
} 

これはあなたのコントローラであり、あなたの視点でそれを使用する必要があります。

関連する問題