空值和 T 之间没有隐式转换



>参数"T 值"可以为空,问题是当我尝试运行 T 值为空的 dapper 查询时(并且我的表确实允许空值(我收到此错误

从数据类型sql_variant到日期时间的隐式转换不是 允许。使用 CONVERT 函数运行此查询。

因此,在我的匿名对象中,我正在检查 T 值是否为空,但我遇到的问题是:

无法确定条件表达式的类型,因为 '' 和 'T' 之间没有隐式转换

线路问题:

value = value.Equals(default(T)) ? null : value, 

如果 T 为空,我希望能够将值更新为 NULL 到表中,否则值可以是 int、字符串等类型。任何人都可以帮助解决这个问题吗?谢谢

法典:

   public async Task UpdateAsync<T>(string field, T value, int id)
    {
        using (var sql = dbConnectionFactory())
        {
            await sql.ExecuteAsync($@"
                UPDATE {TABLE} SET {field} = @value WHERE Id = @id",
                new
                {
                    value = value.Equals(default(T)) ? null : value,
                    id
                }
            );
        }
    }

你应该告诉编译者'T'可以为空

public async Task UpdateAsync<T>(string field, T value, int id) where T: class

相关内容

  • 没有找到相关文章