我有一个问题,即从通过实体框架设置的多对多关系中检索数据的最佳方法。
举个简单的例子,假设我有两个模型:
假设这是一种多对多关系,其中一个项目可以包含多个类别,一个类别可以属于多个项目。
据我了解,我不需要为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
表?
感谢。
答案 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());
}
}
}
那是你的控制器,现在你必须在你的视野中使用它。