我找不到答案。我确信答案很简单,我不认为我在寻找合适的东西。
我有一个包含两个表的.dbml文件:Employees和Departments。两者之间存在关系,员工有一个DepartmentID。
无论如何,我在我的代码中这样做:
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对象时加载了所有信息?
答案 0 :(得分:4)
当您第一次访问emp.Department.Name
时,它访问了数据库,除非deferred loading is turned off。
当您在下一个语句中说emp.Department.Code
时,它不会再次出现,它会在内存中找到Deparment
个对象。
这answer更详细地解释了它。
您可能想看
答案 1 :(得分:0)
查询仅执行一次以检索数据。之后,它将在内存中的上下文中进行跟踪。
您可以使用SQL事件探查器验证这一点。