为什么满足所有业务需求和数据库,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需要使用 NoParameterCommonPropertyConvert
当然也可以重写 NoParameterCommonPropertyConvert
SqlParameterDbType=typeof(NoParameterCommonPropertyConvert )//需要较高版本sqlsugar //NoParameterCommonPropertyConvert可以在下面贴子有进行讨论用法 //https://www.donet5.com/ask/9/31600
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