是在linq之前还是在linq之后加载的Dbset/Dbcontext列表

本文关键字:linq Dbset Dbcontext 列表 加载 是在 之后 | 更新日期: 2023-09-27 18:21:47

在mvc中,当您使用sql使用Dbset/Dbcontext时,表在什么时候被查询?Linq语句正在查询的List中的表在什么时候加载?

比方说我有一个类似的模型

public class MRN : DbContext
{
    public MRN()
        : base("DefaultConnection")
    {
    }
    public DbSet<message> MRNS { get; set; }
}
[Table("MRN")]
public class message
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string From { get; set; }
 }

我的控制器就像

public class MRNController : Controller
    {
    private MRN mrn = new MRN(); // Is the linq list loaded here?
    public ActionResult Someaction(){........
    ......}

动作

public ActionResult somelinq(int id)
{ 
var k = mrn.MRNS.Find(id); //Is the private variable **mrn** already loaded here or does it loads during the linq statement or does linq queries actual table itself?
 }

有人能详细说明SQL表的加载情况吗?即实际的SQL查询是在什么步骤执行的?

是在linq之前还是在linq之后加载的Dbset/Dbcontext列表

一旦实现IQueryable,就会立即执行查询。例如,在其上调用.First/Single(OrDefault).ToList()foreach时。