Sql server 实体框架5返回SQL存储过程单结果效率vb.net
如果我可以访问一个名为proclesults的存储过程,它只返回一行数据,那么选择几个元素而不是整行是否会导致对数据库的多个查询?例如,如果我有: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
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