当前位置:  开发笔记 > 编程语言 > 正文

MVC自动生成索引方法 - 为什么需要.include?

如何解决《MVC自动生成索引方法-为什么需要.include?》经验,为你挑选了1个好方法。

我有一个MVC项目,我使用EF从Northwind数据库引入Products和Categories表.Products表对Categories表的CategoryID字段的CategoryID具有外键约束.我使用向导使用EF添加带有视图的MVC 5控制器.Index操作方法具有此代码

// GET: Products
    public ActionResult Index()
    {
        var products = db.Products.Include(p => p.Category);
        return View(products.ToList());
    }

我假设.include用于引入类别并允许类别名称显示在视图中.但后来我查看了详细信息操作方法,即使它确实显示了类别名称,也不会使用此代码.所以我尝试从索引方法中删除.include来获取它

var products = db.Products;

并运行它,我仍然得到视图中显示的类别名称.所以现在我很困惑为什么.include代码在Index操作方法中而不在Details方法中.任何输入都表示赞赏.

谢谢



1> Najkin..:

Include对底层SQL查询有影响.使用它时,查询将在Category表上执行连接,否则,查询将仅加载Products表中的数据.如果启用了延迟加载(默认情况下),则在访问该属性时将从数据库加载Category.

从应用程序,这意味着您得到完全相同的结果.区别在于,Include只有一个查询,如果没有它,您将有一个查询来检索产品列表,然后每次需要第一次访问产品类别时再查询一个.性能影响可能很大(这被称为N + 1问题,因为要加载N个项目的列表,您必须对数据库进行N + 1次往返).

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有