应用笔记 · 2023年9月29日

SqlSugar Enum枚举类型的灵活处理——存值、存string、显示描述等

1、存储int,实体枚举

数据库是int在实体中直接设置枚举就行了

public  DbType  DbType{get;set;}

2、存储string,实体枚举

数据想要存枚举字符串 那么就需要下面的写法

//新版本:存储字符串 SqlSugar 5.1.4.66-preview02
[SugarColumn(ColumnDataType="varchar(20)",SqlParameterDbType=typeof(EnumToStringConvert))]
public SqlSugar.DbType? EnumValue { get;set; }
 
//老版:本转字符串 
db.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings() { TableEnumIsString = true };
db.Queryable<T>().Where(x=> x.type==p  ).ToList()//Sql:  type= 枚举字符串

注意请升级到:SqlSugar 5.1.4.69

3、存储string ,实体string,DTO是枚举

Select(it=>new dto()
{
   Type=(枚举)(object)it.TypeString
}).ToList()

4、存储int, DTO String

//非匿名对象
var list = db.Queryable<Order>().Select(it=>
  new  DTO
    
         Type= it.Type.ToStrng()//先转成"1" 这种字符串
    })
    .Mapper(it => { 
        //这边完全是C#代码可以调试的
        it.Type=Enum.GetName(typeof(评价), it.type);
    }).ToList();
    
//匿名对象
Select(it=> (dynamic)new
{
  Type=it.Type.ToString()
})
 .Mapper(it => { 
        //这边完全是C#代码可以调试的
        it.Type=Enum.GetName(typeof(评价), (string)it.type);
 }).ToList();