Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
Sql server 实体框架5返回SQL存储过程单结果效率vb.net_Sql Server_Vb.net_Entity Framework_Stored Procedures - Fatal编程技术网

Sql server 实体框架5返回SQL存储过程单结果效率vb.net

Sql server 实体框架5返回SQL存储过程单结果效率vb.net,sql-server,vb.net,entity-framework,stored-procedures,Sql Server,Vb.net,Entity Framework,Stored Procedures,如果我可以访问一个名为proclesults的存储过程,它只返回一行数据,那么选择几个元素而不是整行是否会导致对数据库的多个查询?例如,如果我有: Dim MyEntity As WhateverEntities = New WhateverEntities Dim ResultName as String = MyEntity.procResults.Single().FullName Dim ResultEmail as String = MyEntity.procResults.Sing

如果我可以访问一个名为proclesults的存储过程,它只返回一行数据,那么选择几个元素而不是整行是否会导致对数据库的多个查询?例如,如果我有:

Dim MyEntity As WhateverEntities = New WhateverEntities 
Dim ResultName as String = MyEntity.procResults.Single().FullName
Dim ResultEmail as String = MyEntity.procResults.Single().Email

这会导致对数据库的两个实际查询,还是初始查询将整行存储在内存中,并只为我提供我所要求的两列?理想情况下,我只想返回这两列而不是整行,但不知道最有效的方法是什么。

我无法从
VB.Net
方面回答,但您可以做的是:

您可以使用SQLServerProfiler来跟踪在执行代码时数据库中发生的情况。您将看到存储过程执行了多少次


这是一篇MSDN文章,解释如何使用此工具:

我无法从
VB.Net
方面回答,但您可以做的是:

您可以使用SQLServerProfiler来跟踪在执行代码时数据库中发生的情况。您将看到存储过程执行了多少次


这是一篇MSDN文章,解释了如何使用此工具:

imho EF缓存结果的唯一部分是在使用时
请注意,DbSet[…]始终会针对数据库创建查询,并且始终会涉及到数据库的往返,即使返回的实体已经存在于上下文中
。Find:
Find方法[…]使用主键值尝试查找上下文跟踪的实体。如果在上下文中找不到实体,则将向数据库发送一个查询以在那里找到实体。
imho EF缓存结果的唯一部分是在使用时
请注意,DbSet[…]始终会针对数据库创建查询,并且始终会涉及到数据库的往返,即使返回的实体已经存在于上下文中
。Find:
Find方法[…]使用主键值尝试查找上下文跟踪的实体。如果在上下文中找不到该实体,则将向数据库发送查询以在那里找到该实体。
Dim MyEntity As WhateverEntities = New WhateverEntities 
Dim ResultName as String 
Dim ResultEmail as String 

With MyEntity.procResults.Single()
        ResultName = .FullName
        ResultEmail = .Email
End With