using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using SqlSugar; namespace OrmTest { internal class Unitsadfasysss { public static void Init() { var db = NewUnitTest.Db; string password = "pws"; var user = db.Queryable() .WhereIF(!string.IsNullOrEmpty(password), x => x.Password == password) .ToSql(); if (user.Value.FirstOrDefault().Value+"" != "pws-模拟加密") throw new Exception("unit error"); } /// /// 数据库加密解密实现 /// 用于实体、DTO /// public class SugarDataAesEncryptConverter : ISugarDataConverter { /// /// 参数加密 /// /// 列的值 /// 索引值 /// public SugarParameter ParameterConverter(object columnValue, int columnIndex) { /* * 问题描述: * 查询时,同个字段会执行两次自定义字段处理,导致数据库查询不到值 * columnValue 是上一次处理后的值!!! */ return new SugarParameter($"@Column{columnIndex}", columnValue + "-模拟加密"); } /// /// 查询结果解密 /// /// 字段的类型 /// 行值 /// 字段的类中索引 /// public T QueryConverter(IDataRecord dr, int i) { var value = dr.GetString(i);//字段的值 try { Console.WriteLine("value," + value); return (T)(object)value.Replace("-模拟加密", ""); } catch (Exception e) { Console.WriteLine("SugarDataAesEncryptConverter.QueryConverter解密出错,返回原文!", e); return (T)(object)value; } } } [SugarTable(TableName = "USER")] public class User { [SugarColumn(IsPrimaryKey = true, Length = 50)] public string Id { get; set; } /// /// [SugarColumn(ColumnName = "name")] public string Name { get; set; } /// /// [SugarColumn(ColumnName = "Email")] public string Email { get; set; } /// /// SugarDataAesEncryptConverter aes加密 /// [SugarColumn(ColumnName = "Password", SqlParameterDbType = typeof(SugarDataAesEncryptConverter))] public string Password { get; set; } [SugarColumn(ColumnName = "Remark")] public string Remark { get; set; } public string tenant_id { get; set; } } } }