using SparkClient.Model.Entity.Base; using System.Reflection; using System.Runtime.CompilerServices; namespace SparkClient.Model.Entity; /// /// 系统设置实体 /// public class CutterConfigEntity { public static readonly string TableName = "CUTTER_CONFIG"; [DbField("GUID")] public Guid GUID { get; set; } /// /// 项目名称 /// [DbField("ITEM_NAME")] public required string? ItemName { get; set; } /// /// key /// [DbField("KEY")] public required string? Key { get; set; } /// /// value /// [DbField("VALUE")] public required string? Value { get; set; } private static Dictionary GetFieldMappings() { var properties = typeof(CutterConfigEntity).GetProperties(BindingFlags.Public | BindingFlags.Instance); return properties .Where(p => Attribute.IsDefined(p, typeof(DbFieldAttribute))) .ToDictionary( p => p.Name, p => ((DbFieldAttribute)p.GetCustomAttribute(typeof(DbFieldAttribute))).FieldName ); } // 生成 Insert 语句 public string GenerateInsertSQL() { var mappings = GetFieldMappings(); var columns = string.Join(", ", mappings.Values); var values = string.Join(", ", mappings.Keys.Select(k => $"@{k}")); return $"INSERT INTO {TableName} ({columns}) VALUES ({values});"; } // 生成 Update 语句 public string GenerateUpdateSQL(Dictionary? fieldsToUpdate = null) { if (fieldsToUpdate == null || fieldsToUpdate.Count == 0) { // 默认根据 ID 更新所有字段 var mappings = GetFieldMappings(); var setClause = string.Join(", ", mappings.Values.Select(f => $"{f} = @{f}")); return $"UPDATE {TableName} SET {setClause} WHERE GUID = @GUID;"; } else { // 根据传入的字段更新 var setClause = string.Join(", ", fieldsToUpdate.Keys.Select(f => $"{f} = @{f}")); return $"UPDATE {TableName} SET {setClause} WHERE GUID = @GUID;"; } } // 生成 Delete 语句 public string GenerateDeleteSQL(Dictionary? conditions = null) { if (conditions == null || conditions.Count == 0) { // 默认根据 ID 删除 return $"DELETE FROM {TableName} WHERE GUID ='" + GUID.ToString() + "';"; } else { // 根据传入条件删除 var whereClause = string.Join(" AND ", conditions.Keys.Select(f => $"{f} = @{f}")); return $"DELETE FROM {TableName} WHERE {whereClause};"; } } // 生成 Select 语句 public string GenerateSelectSQL(List? columns = null, Dictionary? conditions = null) { var mappings = GetFieldMappings(); // 如果没有指定列,则查询所有列 string selectColumns = columns != null && columns.Any() ? string.Join(", ", columns.Select(c => mappings[c])) : string.Join(", ", mappings.Values); string sql = $"SELECT {selectColumns} FROM {TableName}"; if (conditions != null && conditions.Any()) { var whereClause = string.Join(" AND ", conditions.Keys.Select(c => $"{mappings[c]} = @{c}")); sql += $" WHERE {whereClause}"; } return sql; } }