Entity Framework SQL 查询生成
Entity Framework SQL Query Generation
我很难理解 Entity Framework 如何从几个 Linq 方法生成单个 SQL 查询。这是从 table.
中选择用户名的代码
var result1 = context.UserMasters
.Where(t => t.UserRole == "LOCAL")
.Skip(100)
.Take(100)
.Select(t => new { t.UserName });
通常上面的代码与下面的代码相同。
var test = context.UserMasters.Where(t=> t.UserRole == "LOCAL");
test = test.Skip(100);
test = test.Take(100);
var result2 = test.Select(t => new { t.UserName });
我希望我们可以在任何 Linq 方法之后从 table 中得到结果。所以总是有一个列表随时可用。是不是先从table中选出所有结果,然后对list进行运算?
如果类型是IQueryable,那么数据的过滤发生在数据库端。但是,如果查询类型是 IEnumerable 或 IQueryable 以外的类型,则会提取 table 中的所有数据,并在 .Net 端完成过滤。在这些情况下,始终建议使用 IQueryable。请阅读 IQueryable 和 IEnumerable 的区别。
我很难理解 Entity Framework 如何从几个 Linq 方法生成单个 SQL 查询。这是从 table.
中选择用户名的代码 var result1 = context.UserMasters
.Where(t => t.UserRole == "LOCAL")
.Skip(100)
.Take(100)
.Select(t => new { t.UserName });
通常上面的代码与下面的代码相同。
var test = context.UserMasters.Where(t=> t.UserRole == "LOCAL");
test = test.Skip(100);
test = test.Take(100);
var result2 = test.Select(t => new { t.UserName });
我希望我们可以在任何 Linq 方法之后从 table 中得到结果。所以总是有一个列表随时可用。是不是先从table中选出所有结果,然后对list进行运算?
如果类型是IQueryable,那么数据的过滤发生在数据库端。但是,如果查询类型是 IEnumerable 或 IQueryable 以外的类型,则会提取 table 中的所有数据,并在 .Net 端完成过滤。在这些情况下,始终建议使用 IQueryable。请阅读 IQueryable 和 IEnumerable 的区别。