Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 艾尔·马克斯回来了。如果这看起来有些过分,我建议您为它们生成单独的语句,并将它们发送到SQL Server进行处理。一般来说,在减少的结果集上,客户端处理的结果与服务器处理的结果相同或更好。_C#_Vb.net_Entity Framework_Data Binding_Ado.net - Fatal编程技术网

C# 艾尔·马克斯回来了。如果这看起来有些过分,我建议您为它们生成单独的语句,并将它们发送到SQL Server进行处理。一般来说,在减少的结果集上,客户端处理的结果与服务器处理的结果相同或更好。

C# 艾尔·马克斯回来了。如果这看起来有些过分,我建议您为它们生成单独的语句,并将它们发送到SQL Server进行处理。一般来说,在减少的结果集上,客户端处理的结果与服务器处理的结果相同或更好。,c#,vb.net,entity-framework,data-binding,ado.net,C#,Vb.net,Entity Framework,Data Binding,Ado.net,根据您提供的信息,我看不出您的EF代码有任何错误。大多数现在使用LINQ扩展方法来完成他们所需要的,因为它不像直接LINQ那样冗长。我确实相信它们最终会被转换成扩展方法 林克: 从dbContext.MyTable中的记录中选择新的{record.Start\u Date} LINQ扩展: dbContext.MyTable.Select(x=>new{x.Start\u Date}) 看看它们是如何变短并传达相同的意思 你选择你感兴趣的领域也是一个很好的习惯。它将减少发送到服务器的查询的大小,

根据您提供的信息,我看不出您的EF代码有任何错误。大多数现在使用LINQ扩展方法来完成他们所需要的,因为它不像直接LINQ那样冗长。我确实相信它们最终会被转换成扩展方法

林克:
从dbContext.MyTable中的记录中选择新的{record.Start\u Date}

LINQ扩展:
dbContext.MyTable.Select(x=>new{x.Start\u Date})

看看它们是如何变短并传达相同的意思

你选择你感兴趣的领域也是一个很好的习惯。它将减少发送到服务器的查询的大小,还将减少服务器返回的结果

您使用的是
using
语句,因此上下文将被释放,不使用时不会使连接保持打开状态。这是好的,但是对于winform应用程序,上下文是否应该在显示的表单的生命周期内存在是有争议的


一般环境足迹 当您使用LINQ创建条件时,实际上这是一个正在生成的SQL语句,并且还没有执行任何操作。在访问查询结果之前,需要“具体化”结果。要做到这一点,您只需要从查询中访问一个元素,将其发送到服务器以获取结果。您可以使用
ToList
来执行此操作。除非仍在有条件地构建查询,否则应该始终这样做

非常重要的一点是,在大多数情况下,延迟加载并不是一件好事。这非常方便,但它可以创建n+1条件,而且性能会受到影响,因为您在父集合上访问的每个子集合项都会生成一个查询来获取它。在这里,使用像
AutoMapper
这样的工具或使用
Include
语句可以一次性从服务器获取所有信息

例如:
var orderWithDetails=db.Orders.Include(order=>order.LineItems).FirstOrDefault(order=>order.Id==4)
将生成一条SQL语句,该语句将选择id为4的订单,并生成额外的SQL以选择与之关联的所有记录。如果不这样做并且启用了延迟加载,则可能会生成多个子查询,从而影响性能

重要的是要记住,ORM只是让我们更容易访问数据,而不需要对系统的其他组件进行性能测试


编辑: 我觉得这应该包括在内,@BrunoMonteiro确实指出了这一点。当您选择不同的日期时,您是通过一个具体化的查询来完成的,
dates
。因此,所有这些都将发生在客户机上,而不是SQL Server上。根据与从
Where
子句返回的记录集关联的记录数,这可能是一个问题


您应该看到返回的数量和可能返回的最大值。如果这看起来有些过分,我建议您为它们生成单独的语句,并将它们发送到SQL Server进行处理。一般来说,在减少的结果集上,客户端处理的结果与服务器处理的结果相同或更好。

根据您提供的信息,我看不出您的EF代码有任何错误。大多数现在使用LINQ扩展方法来完成他们所需要的,因为它不像直接LINQ那样冗长。我确实相信它们最终会被转换成扩展方法

林克:
从dbContext.MyTable中的记录中选择新的{record.Start\u Date}

LINQ扩展:
dbContext.MyTable.Select(x=>new{x.Start\u Date})

看看它们是如何变短并传达相同的意思

你选择你感兴趣的领域也是一个很好的习惯。它将减少发送到服务器的查询的大小,还将减少服务器返回的结果

您使用的是
using
语句,因此上下文将被释放,不使用时不会使连接保持打开状态。这是好的,但是对于winform应用程序,上下文是否应该在显示的表单的生命周期内存在是有争议的


一般环境足迹 当您使用LINQ创建条件时,实际上这是一个正在生成的SQL语句,并且还没有执行任何操作。在访问查询结果之前,需要“具体化”结果。要做到这一点,您只需要从查询中访问一个元素,将其发送到服务器以获取结果。您可以使用
ToList
来执行此操作。除非仍在有条件地构建查询,否则应该始终这样做

非常重要的一点是,在大多数情况下,延迟加载并不是一件好事。这非常方便,但它可以创建n+1条件,而且性能会受到影响,因为您在父集合上访问的每个子集合项都会生成一个查询来获取它。在这里,使用像
AutoMapper
这样的工具或使用
Include
语句可以一次性从服务器获取所有信息

例如:
var orderWithDetails=db.Orders.Include(order=>order.LineItems).FirstOrDefault(order=>order.Id==4)
将生成一条SQL语句,该语句将选择id为4的订单,并生成额外的SQL以选择与之关联的所有记录。如果不这样做并且启用了延迟加载,则可能会生成多个子查询,从而影响性能

重要的是要记住,ORM只是让我们更容易访问数据,而不需要对系统的其他组件进行性能测试


编辑: 我觉得这是一件很有趣的事情