为什么满足所有业务需求和数据库,SqlSugar提供了自定义类型的使用
自带的转换考虑到数据安全和性能不支持逆向转换, 例如varchar不能转成datetime等
可以用ORM自带通用转换处理简单类型的强制转换
[SugarColumn(SqlParameterDbType=typeof(CommonPropertyConvert))]//CommonPropertyConvertORM自带的 public DateTime DcValue { get; set; }//5.1.4.62版本支持 //CommonPropertyConvert 可以F12看他源码重新改一个新类完全可以自定义
如果想自定义可以F12这个类,按这个类模式写个新的。
下面只是讲解怎么定义转换器,ORM自带的功能就包含下面功能,只是用来讲解
//用例1: public class DictionaryConvert : ISugarDataConverter { public SugarParameter ParameterConverter<T>(object value, int i) { //该功能ORM自带的IsJson就能实现这里只是用这个用例来给大家学习 var name = "@myp" + i; var str = new SerializeService().SerializeObject(value); //可以更改DbType=System.Data.DbType.XXX //PgSql中可以使用:CustomDbType=NpgsqlDbType.XXX; return new SugarParameter(name, str); } public T QueryConverter<T>(IDataRecord dr, int i) { //打断点调试 //该功能ORM自带的IsJson就能实现这里只是用这个用例来给大家学习 var str = dr.GetValue(i) + ""; return new SerializeService().DeserializeObject<T>(str); //如果不是序列化要转成T如下 //(T)(object) str } }
[SugarColumn(ColumnDataType="varchar(2000)",SqlParameterDbType=typeof(DictionaryConvert))] public Dictionary<string, object> DcValue { get; set; }//5.1.3.53-preview08
https://www.donet5.com/Home/Doc?typeId=1232
int存储:直接用就行了
public DbType DcValue { get; set; }
string存储:高版本如下写法
//如果枚举想存string [SugarColumn(ColumnDataType="varchar(20)",SqlParameterDbType=typeof(EnumToStringConvert))]//这个类是ORM自带的 public DbType DcValue { get; set; }
看左边菜单 【数据库特性】 该菜单下面有 SqlServer菜单或者MySql菜单等 , 针对不同数据库都有专门的介绍
2016 © donet5.comApache Licence 2.0