DbSet<TEntity>.SqlQuery 方法
[本页针对的是实体框架版本 6。最新版本以“实体框架”NuGet 包的形式提供。有关实体框架的更多信息,请参见 msdn.com/data/ef。]
创建一个原始 SQL 查询,该查询将返回此集中的实体。 默认情况下,上下文会跟踪返回的实体;可通过对返回的 DbSqlQuery<TEntity> 调用 AsNoTracking 来更改此设置。 请注意返回实体的类型始终是此集的类型,而不会是派生的类型。 如果查询的一个或多个表可能包含其他实体类型的数据,则必须编写适当的 SQL 查询以确保只返回适当类型的实体。 与接受 SQL 的任何 API 一样,对任何用户输入进行参数化以便避免 SQL 注入攻击是十分重要的。 您可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为附加参数提供。 您提供的任何参数值都将自动转换为 DbParameter。 context.Blogs.SqlQuery("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor); 或者,您还可以构造一个 DbParameter 并将它提供给 SqlQuery。 这允许您在 SQL 查询字符串中使用命名参数。 context.Blogs.SqlQuery("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
命名空间: System.Data.Entity
程序集: EntityFramework(在 EntityFramework.dll 中)
语法
声明
Public Overridable Function SqlQuery ( _
sql As String, _
ParamArray parameters As Object() _
) As DbSqlQuery(Of TEntity)
用法
Dim instance As DbSet
Dim sql As String
Dim parameters As Object()
Dim returnValue As DbSqlQuery(Of TEntity)
returnValue = instance.SqlQuery(sql, parameters)
public virtual DbSqlQuery<TEntity> SqlQuery(
string sql,
params Object[] parameters
)
public:
virtual DbSqlQuery<TEntity>^ SqlQuery(
String^ sql,
... array<Object^>^ parameters
)
abstract SqlQuery :
sql:string *
parameters:Object[] -> DbSqlQuery<'TEntity>
override SqlQuery :
sql:string *
parameters:Object[] -> DbSqlQuery<'TEntity>
public function SqlQuery(
sql : String,
... parameters : Object[]
) : DbSqlQuery<TEntity>
参数
- sql
类型:System.String
SQL 查询字符串。
- parameters
类型:System.Object[]
要应用于 SQL 查询字符串的参数。 如果使用输出参数,则它们的值在完全读取结果之前不可用。 这是由于 DbDataReader 的基础行为而导致的,有关详细信息,请参见 https://go.microsoft.com/fwlink/?LinkID=398589。
返回值
类型:System.Data.Entity.Infrastructure.DbSqlQuery<TEntity>
一个 DbSqlQuery<TEntity> 对象,此对象在枚举时将执行查询。