如何使工作SqlQuery<>方法?

时间:2016-11-03 09:58:07

标签: c# entity-framework

我在项目中使用实体框架6。

我使用Database类的SqlQuery方法从表中获取一些字符串值。

以下是代码:

string name = "Dana";

context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = name ", name).ToList();

但似乎我在SqlQuery方法中使用 name 变量是错误的。

知道我应该在SqlQuery方法字符串中修复哪些内容才能正常查询?

5 个答案:

答案 0 :(得分:1)

您忘了指定@是参数。在它之前添加context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = @p0", name).ToList();

SqlParameter

如果要命名参数,请使用context.Database.SqlQuery<string>( "SELECT DisplayName FROM Users WHERE Username = @name", new SqlParameter("@name", name) ).ToList(); class:

function hex2float(num) {
var sign = (num & 0x80000000) ? -1 : 1;
var exponent = ((num >> 23) & 0xff) - 127;
var mantissa = 1 + ((num & 0x7fffff) / 0x7fffff);
return sign * mantissa * Math.pow(2, exponent);
}

答案 1 :(得分:1)

{{1}}
  

您提供的任何参数值都将自动转换为DbParameter。

请参阅Database.SqlQuery Method

答案 2 :(得分:1)

context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = @name ", 
                new SqlParameter("@name", name)).ToList();

答案 3 :(得分:1)

您忘记将@放在名字参数之前。你也不应该只是将一个字符串传递给方法。如果你使用SqlParameter来阻止任何Sql注入

,它会更好
string name = "Dana";
SqlParameter paramName = new SqlParameter("name", name );
context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = @name ", paramName ).ToList();

答案 4 :(得分:1)

我认为你应该像这样使用它:

context.Database.SqlQuery<string>(
    "SELECT DisplayName FROM Users WHERE Username = @name",
    new SqlParameter("name", name)
).ToList();