为什么不这样做?它使用这个原始sql中的参数?

时间:2014-06-27 14:25:02

标签: entity-framework

我正在使用此代码:

SqlParameter pNombreUsuario = new SqlParameter("NombreUsuario", paramNombreUsuario);
object[] parametros = new object[] { pNombreUsuario };

string passwordDB = dbContext.Database.SqlQuery<string>("select password from Personal where NombreUsuario = @NombreUsuario", parametros)
                             .SingleOrDefault<string>();

但发送到数据库的查询是:

select password from Personal where NombreUsuario = @NombreUsuario

为什么不使用带有用户名的参数?

感谢。

1 个答案:

答案 0 :(得分:1)

docs表示您应该发送一个对象值数组而不是SqlParameter个对象。

E.g。

string passwordDB = dbContext.Database
                             .SqlQuery<string>("select password from Personal where NombreUsuario = @p0", paramNombreUsuario)
                             .SingleOrDefault<string>();

这对你有用吗?

编辑:我误读了文档。试试这个:

string passwordDB = dbContext.Database
                             .SqlQuery<string>(
                                 "select password from Personal where NombreUsuario = @NombreUsuario", 
                                 new SqlParameter("NombreUsuario", paramNombreUsuario))
                             .SingleOrDefault<string>();