今天把通用更新的方法封装一下,整理一下思路,先写出一条 Update 的语句:
UPDATE [{type.Name}] SET {updateString} WHERE Id = @Id
同样,括号里面的内容是可变部分,我们用反射动态获取。
Type type = typeof(T);var updateString = string.Join(",", type.GetProperties().NotKey().Select(p => $"[{p.Name}] = @{p.Name}"));var sql = $"UPDATE [{type.Name}] SET {updateString} WHERE Id = @Id";
防注入,我们使用SQL语句参数化。(此处有坑,如何字段值为空,会报错,所有用了 ?? DBNull.Value)
//生成参数数组var paramterList = type.GetProperties().Select(p => new SqlParameter($"@{p.Name}", p.GetValue(t) ?? DBNull.Value));
打印拼接的SQL语句。
UPDATE [User] SET [Name] = &