>参数"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