【问题标题】:Asp.net MVC Entity Framework best way to retrieve data in many to many relationshipsAsp.net MVC Entity Framework 在多对多关系中检索数据的最佳方式
【发布时间】:2016-04-26 09:15:50
【问题描述】:

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

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

  1. 项目
  2. 类别

假设这是一个多对多的关系,其中一个项目可以有许多类别,一个类别可以属于许多项目。

据我了解,我不需要为 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() 时,它会自动检索每个项目的类别,因此每个项目的类别列表不为空。

或者,有没有办法让ItemCategory 表在应用程序数据库上下文中表示?

谢谢。

【问题讨论】:

    标签: asp.net-mvc entity-framework


    【解决方案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());
            }
         }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 2013-11-18
      • 2016-12-18
      相关资源
      最近更新 更多