gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:06:48 28 4
gpt4 key购买 nike

我有一个 MVC 项目,我使用 EF 从 Northwind 数据库引入“产品”和“类别”表。 Products 表在 CategoryID 上对 CategoryID 字段有一个外键约束。我使用向导使用 EF 添加带有 View 的 MVC 5 Controller 。 Index 操作方法有此代码

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

我假设 .include 是为了引入类别并允许类别名称显示在 View 中。但后来我查看了“详细信息”操作方法,它没有使用此代码,即使它确实显示了类别名称。然后我尝试从 Index 方法中剥离 .include 来得到这个

var products = db.Products;

并运行它,我仍然在 View 中显示类别名称。所以现在我很困惑为什么 .include 代码位于 Index 操作方法中而不是位于 Details 方法中。欢迎任何意见。

谢谢

最佳答案

Include 对底层 SQL 查询有影响。使用它时,查询将对 Category 表进行联接,否则,查询将仅从 Products 表加载数据。如果启用延迟加载(默认情况下),则在访问属性时将从数据库加载类别。

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

关于c# - MVC 自动生成索引方法 - 为什么需要 .include?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571048/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com