Linq-to-Sql 数据库调用

本文关键字:调用 数据库 Linq-to-Sql | 更新日期: 2023-09-27 17:56:17

我找不到答案。我相信答案很简单,我不认为我在寻找正确的东西。

我有一个 .dbml 文件,其中包含两个表:员工和部门。两者之间有关系,员工有一个部门ID。

无论如何,我在我的代码中这样做:

Employee emp = Employee.Get(123);
string fname = emp.FirstName;
string lname = emp.LastName;
string deptName = emp.Department.Name;
string deptCode = emp.Department.Code;

想知道的是,每次我打电话给emp.Department,这是在进行数据库调用吗?还是在创建 Employee 对象时加载了所有这些信息?

Linq-to-Sql 数据库调用

当您

第一次访问数据库时,它会访问数据库emp.Department.Name除非关闭延迟加载。

当您在下一个语句中说emp.Department.Code时,它不会再进行一次旅行,它已经在内存中获取了Deparment对象。

这个答案更详细地解释了它。

你可能想看

  • LINQ-to-SQL 或 LINQ 在什么时候向数据库发送请求
  • linq to sql 会自动延迟加载关联的实体吗?
  • 博客:Linq to SQL 延迟加载 - 延迟加载

查询仅执行一次以检索数据。之后,它会在内存中的上下文中跟踪。

可以使用 SQL 事件探查器对此进行验证。