gpt4 book ai didi

c# - 脚手架创建的 Tolist() 有什么好处?

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:43 24 4
gpt4 key购买 nike

MVC 中的脚手架创建这样的操作:

public ActionResult Index()
{
var users = db.Users.Include(u => u.Roles);
return View(users.ToList());
}

鉴于我们使用下面的模型:

@model IEnumerable<DataLayer.Users> 

如果我们在操作中消除 Tolist() 它会正常工作。脚手架使用这个的 Tolist() 有什么好处?如果我们去掉 ToList() 是不是错了?

最佳答案

如果你让 Tolist()在 Controller 的操作中,查询 users 在您的操作中执行。您正在将类型的模型传递给您的 View List<DataLayer.Users>所以因为它实现了 IEnumerable<DataLayer.Users>它可以正常工作。

如果删除 Tolist()在 Controller 的操作中,查询 users 不在您的操作中执行。您正在将类型的模型传递给您的 View IQueryable<DataLayer.Users>所以因为它实现了 IEnumerable<DataLayer.Users>它可以正常工作。当然,在你的 Razor View 中的某个地方,你正在做一个循环,比如使用 foreach在您的 View 模型上,因此查询是在您的 View 中执行的,而不是在 Controller 的操作中。也没有抛出异常,因为 DbContext仍然在您的 Controller 上声明为一个字段,而不是在您的操作方法中本地,因此它仍然是打开的。

根据您对哪个更好的评论进行编辑?

更好的做法是在您的操作中执行查询(使用 ToList() ),这样 Razor View 除了读取结果外什么都不做。通过这样做,您将在操作中获得与查询执行相关的任何错误,如果需要,可以捕获它们并记录下来。

关于c# - 脚手架创建的 Tolist() 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50986961/

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