ObjectContext.ExecuteStoreQuery 方法

定义

重载

ExecuteStoreQuery<TElement>(String, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。

ExecuteStoreQuery<TEntity>(String, String, MergeOption, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。 指定实体集和合并选项,以便能够将查询结果作为实体进行跟踪。

ExecuteStoreQuery<TElement>(String, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。

public:
generic <typename TElement>
 System::Data::Objects::ObjectResult<TElement> ^ ExecuteStoreQuery(System::String ^ commandText, ... cli::array <System::Object ^> ^ parameters);
public System.Data.Objects.ObjectResult<TElement> ExecuteStoreQuery<TElement> (string commandText, params object[] parameters);
member this.ExecuteStoreQuery : string * obj[] -> System.Data.Objects.ObjectResult<'Element>
Public Function ExecuteStoreQuery(Of TElement) (commandText As String, ParamArray parameters As Object()) As ObjectResult(Of TElement)

类型参数

TElement

返回的数据的类型。

参数

commandText
String

要用数据源的本机语言执行的命令。

parameters
Object[]

要传递给命令的参数数组。

返回

ObjectResult<TElement>

类型为 TElement 的对象的枚举。

注解

方法 ExecuteStoreQuery 使用现有连接直接对数据源执行任意命令。 如果存在当前事务,则将在当前事务的上下文中执行存储命令。

调用 ExecuteStoreQuery 方法等效于调用 ExecuteReader 类的 DbCommand 方法,只是 ExecuteStoreQuery 返回实体,而 ExecuteReader 返回 DbDataReader 中的属性值。

ExecuteStoreQuery如果要跟踪结果,请调用具有指定实体集名称的 。

Translate当读取器包含映射到指定实体类型的数据行时,调用 方法将 转换为DbDataReader实体对象。

使用参数化命令可帮助抵御 SQL 注入攻击,这种攻击的攻击者会将命令“注入”SQL 语句,从而危及服务器的安全。 参数化命令通过保证从外部源接收的值仅作为值而不是 SQL 语句的一部分传递来防范 SQL 注入攻击。 因此,插入值中的 SQL 命令不会在数据源中执行。 相反,只会将这些命令作为参数值来计算。 除了安全优势外,参数化命令还提供一种方便的方法,用于组织通过 SQL 语句或存储过程传递的值。

parameters 值可以是 DbParameter 对象数组或参数值数组。 如果仅提供值,则根据数组 DbParameter 中值的顺序创建对象的数组。

有关详细信息,请参阅:

直接执行存储命令

如何:针对数据源直接执行命令

适用于

ExecuteStoreQuery<TEntity>(String, String, MergeOption, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。 指定实体集和合并选项,以便能够将查询结果作为实体进行跟踪。

public:
generic <typename TEntity>
 System::Data::Objects::ObjectResult<TEntity> ^ ExecuteStoreQuery(System::String ^ commandText, System::String ^ entitySetName, System::Data::Objects::MergeOption mergeOption, ... cli::array <System::Object ^> ^ parameters);
public System.Data.Objects.ObjectResult<TEntity> ExecuteStoreQuery<TEntity> (string commandText, string entitySetName, System.Data.Objects.MergeOption mergeOption, params object[] parameters);
member this.ExecuteStoreQuery : string * string * System.Data.Objects.MergeOption * obj[] -> System.Data.Objects.ObjectResult<'Entity>
Public Function ExecuteStoreQuery(Of TEntity) (commandText As String, entitySetName As String, mergeOption As MergeOption, ParamArray parameters As Object()) As ObjectResult(Of TEntity)

类型参数

TEntity

返回的数据的实体类型。

参数

commandText
String

要用数据源的本机语言执行的命令。

entitySetName
String

TEntity 类型的实体集。 如果未提供实体集名称,则不会跟踪结果。

mergeOption
MergeOption

要在执行查询时使用的 MergeOption。 默认值为 AppendOnly

parameters
Object[]

要传递给命令的参数数组。

返回

ObjectResult<TEntity>

类型为 TResult 的对象的枚举。

注解

方法 ExecuteStoreQuery 使用现有连接直接对数据源执行任意命令。 如果存在当前事务,则将在当前事务的上下文中执行存储命令。

调用 ExecuteStoreQuery 方法等效于调用 ExecuteReader 类的 DbCommand 方法,只是 ExecuteStoreQuery 返回实体,而 ExecuteReader 返回 DbDataReader 中的属性值。

如果要将结果跟踪为实体,请指定实体集名称。

当读取器包含映射到指定实体类型的数据行时,调用 Translate 方法将 转换为 DbDataReader 实体对象。

使用参数化命令可帮助抵御 SQL 注入攻击,这种攻击的攻击者会将命令“注入”SQL 语句,从而危及服务器的安全。 参数化命令通过保证从外部源接收的值仅作为值而不是 SQL 语句的一部分传递来防范 SQL 注入攻击。 因此,插入值中的 SQL 命令不会在数据源中执行。 相反,只会将这些命令作为参数值来计算。 除了安全优势外,参数化命令还提供一种方便的方法,用于组织通过 SQL 语句或存储过程传递的值。

parameters 值可以是 DbParameter 对象数组或参数值数组。 如果仅提供值,则根据数组 DbParameter 中值的顺序创建对象的数组。

有关详细信息,请参阅:

直接执行存储命令

如何:针对数据源直接执行命令

适用于