在查询中插入空值作为内插参数
insert null value as interpolated parameter in query
我正在尝试使用 InlineData:
构建一个简单的 xUnit 测试
[Theory]
[InlineData(null, "Message")]
public void MyTest(object value, string message)
{
var insertQuery = $@"INSERT INTO {_MyTable} (
[MyId]
) VALUES (
{value}
);";
using (IDbConnection connection = new SqlConnection(_connectionString))
{
connection.Execute(query);
}
}
我真的很想插入值 NULL 但是在执行它时抱怨:
'Incorrect syntax near ')'.'
确实,如果我去检查查询,它看起来像这样:
INSERT INTO TestTable (
[MyId]
) VALUES (
);
所以查询中插入的参数没有正确插入。我怎样才能做到这一点?谢谢!
既然你已经标记了这个 dapper,基本上:不要使用内插字符串;那是不是它的工作方式。相反:
using var connection = new SqlConnection(_connectionString);
connection.Execute(@"
INSERT INTO TableNameThisShouldBeAConstant ([MyId])
VALUES (@value);", new { value });
请注意,这里的 value
最好是 well-typed 作为 string/int/etc。
我正在尝试使用 InlineData:
构建一个简单的 xUnit 测试[Theory]
[InlineData(null, "Message")]
public void MyTest(object value, string message)
{
var insertQuery = $@"INSERT INTO {_MyTable} (
[MyId]
) VALUES (
{value}
);";
using (IDbConnection connection = new SqlConnection(_connectionString))
{
connection.Execute(query);
}
}
我真的很想插入值 NULL 但是在执行它时抱怨:
'Incorrect syntax near ')'.'
确实,如果我去检查查询,它看起来像这样:
INSERT INTO TestTable (
[MyId]
) VALUES (
);
所以查询中插入的参数没有正确插入。我怎样才能做到这一点?谢谢!
既然你已经标记了这个 dapper,基本上:不要使用内插字符串;那是不是它的工作方式。相反:
using var connection = new SqlConnection(_connectionString);
connection.Execute(@"
INSERT INTO TableNameThisShouldBeAConstant ([MyId])
VALUES (@value);", new { value });
请注意,这里的 value
最好是 well-typed 作为 string/int/etc。