mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-06-27 19:41:17 +08:00
NoSql support
This commit is contained in:
parent
00605da0e6
commit
8870fb173c
@ -214,6 +214,15 @@ namespace SqlSugar
|
||||
generator.Emit(OpCodes.Ldloc, result);
|
||||
generator.Emit(OpCodes.Ldarg_0);
|
||||
generator.Emit(OpCodes.Ldc_I4, i);
|
||||
var insertBuilder = InstanceFactory.GetInsertBuilder(this.Context?.CurrentConnectionConfig);
|
||||
if (insertBuilder?.DeserializeObjectFunc != null)
|
||||
{
|
||||
if (IDataRecordExtensions.DeserializeObjectFunc == null)
|
||||
{
|
||||
IDataRecordExtensions.DeserializeObjectFunc = insertBuilder.DeserializeObjectFunc;
|
||||
}
|
||||
jsonMethod =typeof(IDataRecordExtensions).GetMethod("GetDeserializeObject").MakeGenericMethod(columnInfo.PropertyInfo.PropertyType);
|
||||
}
|
||||
generator.Emit(OpCodes.Call, jsonMethod);
|
||||
generator.Emit(OpCodes.Callvirt, columnInfo.PropertyInfo.GetSetMethod(true));
|
||||
generator.MarkLabel(endIfLabel);
|
||||
@ -511,5 +520,5 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,17 @@ namespace SqlSugar
|
||||
public static partial class IDataRecordExtensions
|
||||
{
|
||||
|
||||
#region Common Extensions
|
||||
#region Common Extensions
|
||||
public static Func<object, Type, object> DeserializeObjectFunc { get; internal set; }
|
||||
|
||||
public static T GetDeserializeObject<T>(this IDataReader dr, int i)
|
||||
{
|
||||
var obj = dr.GetValue(i);
|
||||
if (obj == null)
|
||||
return default(T);
|
||||
var value = obj;
|
||||
return (T)DeserializeObjectFunc(value, typeof(T));
|
||||
}
|
||||
public static XElement GetXelement(this IDataRecord dr, int i)
|
||||
{
|
||||
var result = XElement.Parse(dr.GetString(i).ToString());
|
||||
|
@ -347,8 +347,14 @@ namespace SqlSugar
|
||||
}
|
||||
if (column.IsJson && columnInfo.Value != null)
|
||||
{
|
||||
if (columnInfo.Value != null)
|
||||
if (this.InsertBuilder.SerializeObjectFunc != null&& columnInfo.Value != null)
|
||||
{
|
||||
columnInfo.Value = this.InsertBuilder.SerializeObjectFunc(columnInfo.Value);
|
||||
}
|
||||
else if (columnInfo.Value != null)
|
||||
{
|
||||
columnInfo.Value = this.Context.Utilities.SerializeObject(columnInfo.Value);
|
||||
}
|
||||
}
|
||||
//var tranColumn=EntityInfo.Columns.FirstOrDefault(it => it.IsTranscoding && it.DbColumnName.Equals(column.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
|
||||
if (column.IsTranscoding && columnInfo.Value.HasValue())
|
||||
|
@ -88,6 +88,8 @@ namespace SqlSugar
|
||||
|
||||
#region Methods
|
||||
|
||||
public virtual Func<object, string> SerializeObjectFunc { get; set; }
|
||||
public virtual Func<object, Type, object> DeserializeObjectFunc { get; set; }
|
||||
public virtual void ActionMinDate()
|
||||
{
|
||||
if (this.Parameters != null)
|
||||
@ -393,7 +395,7 @@ namespace SqlSugar
|
||||
}
|
||||
return (Type)columnInfo.SqlParameterDbType == UtilConstants.SqlConvertType;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user