Asp.net MVC实体框架在多对多关系中检索数据的最佳方式

时间:2016-04-26 09:15:50

标签: asp.net-mvc entity-framework

我有一个问题,即从通过实体框架设置的多对多关系中检索数据的最佳方法。

举个简单的例子,假设我有两个模型:

  1. 产品
  2. 分类
  3. 假设这是一种多对多关系,其中一个项目可以包含多个类别,一个类别可以属于多个项目。

    据我了解,我不需要为Item-Category关系创建第三个模型,因为它由实体框架本身处理。

    因此,一旦设置好所有内容并且我在两个模型上都使用了脚手架,我最终会得到类似于此的代码:

      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; }
    

    现在,我想在每个项目及其相关类别中显示我的视图。 我知道我的代码类似于:

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

    我还可以在数据库上下文类中创建一个名为AllCategoriesForItem(int itemID)的方法。

    我想知道是否有更好的选择?例如,当使用dbContext.Items.ToList()时,它会自动检索每个项目的类别,因此每个项目的“类别”列表不为空。

    或者,是否有办法在应用程序db上下文中表示ItemCategory表?

    感谢。

1 个答案:

答案 0 :(得分: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());
        }
     }
}

那是你的控制器,现在你必须在你的视野中使用它。