在查询中插入空值作为内插参数

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 (
        
    );

所以查询中插入的参数没有正确插入。我怎样才能做到这一点?谢谢!

既然你已经标记了这个 ,基本上:不要使用内插字符串;那是不是它的工作方式。相反:

using var connection = new SqlConnection(_connectionString);
connection.Execute(@"
INSERT INTO TableNameThisShouldBeAConstant ([MyId])
VALUES (@value);", new { value });

请注意,这里的 value 最好是 well-typed 作为 string/int/etc。