//生成sql语句的通用类
public class CreateSql
{
/// <summary>
/// 生成Insert语句
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <param name="cols">要插入的必要列</param>
/// <returns></returns>
public static SqlModel GetInsertSqlAndParas<T>(T t, string cols, int isReturn)
{
Type type = typeof(T);
PropertyInfo[] properties = PropertyHelper.GetTypeProperties<T>(cols);
string priName = type.GetPrimary();//获取主键名 标识列(不需要显式插入)
//生成要插入的列 {1} insert into table (Id,Name,Age....) values (@Id,@Name,@Age)
string columns = string.Join(",", properties.Where(p => p.Name != priName).Select(p => $"[{p.GetColName()}]"));
//生成插入的参数{2}
string paraColumns = string.Join(",", properties.Where(p => p.Name != priName).Select(p => $"@{p.GetColName()}"));
//参数数组的生成
SqlParameter[] arrParas = CreateParameters<T>(properties, t);
//sql语句
string sql = $"INSERT INTO [{type.GetTName()}] ({columns}) VALUES ({paraColumns}) ";
if (isReturn == 1)
sql += ";select @@identity";
return new SqlModel
11-01
187
10-25
296
10-21
174
10-10
415
10-09
369
10-08
272
10-04
229
10-03
180