linq-to-sql或linq在什么时候向数据库发送请求

Kie*_*ran 2 c# linq asp.net linq-to-sql

我想让我的查询更好,但是无法找到一个资源,当查询被发送到数据库时.

DBContext db = new DBContext();
Order _order = (from o in db
                where o.OrderID == "qwerty-asdf-xcvb"
                select o).FirstOrDefault();
String _custName = _order.Customer.Name +" "+_order.Customer.Surname;
Run Code Online (Sandbox Code Playgroud)

_custName的赋值是否需要向数据库发出任何请求?

jas*_*son 7

是否_custName需要向数据库发出任何请求?

这取决于是否Order.Customer懒惰.如果它是懒惰的,那么是的.否则,没有.

顺便说一下,如果设置DataContext.Log属性,则可以轻松调查:

db.Log = Console.Out;
Run Code Online (Sandbox Code Playgroud)

然后,您可以在控制台上查看SQL语句.通过单步执行程序,您可以确切地看到SQL语句何时命中数据库.

查看延迟与立即加载的 MSDN .特别是,您可以关闭延迟加载.注意这个SELECT N + 1问题.