mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 16:18:47 +08:00
Code optimization
This commit is contained in:
parent
ae8e2706e3
commit
f1030ab8aa
@ -119,7 +119,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
if (this.ReaderKeys.Any(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)))
|
if (this.ReaderKeys.Any(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)))
|
||||||
{
|
{
|
||||||
BindField(generator, result, columnInfo.PropertyInfo, ReaderKeys.First(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)));
|
BindField(generator, result, columnInfo, ReaderKeys.First(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
private void BindField(ILGenerator generator, LocalBuilder result, PropertyInfo propertyInfo, string fieldName)
|
private void BindField(ILGenerator generator, LocalBuilder result, EntityColumnInfo columnInfo, string fieldName)
|
||||||
{
|
{
|
||||||
int i = DataRecord.GetOrdinal(fieldName);
|
int i = DataRecord.GetOrdinal(fieldName);
|
||||||
Label endIfLabel = generator.DefineLabel();
|
Label endIfLabel = generator.DefineLabel();
|
||||||
@ -153,21 +153,21 @@ namespace SqlSugar
|
|||||||
generator.Emit(OpCodes.Ldloc, result);
|
generator.Emit(OpCodes.Ldloc, result);
|
||||||
generator.Emit(OpCodes.Ldarg_0);
|
generator.Emit(OpCodes.Ldarg_0);
|
||||||
generator.Emit(OpCodes.Ldc_I4, i);
|
generator.Emit(OpCodes.Ldc_I4, i);
|
||||||
BindMethod(generator, propertyInfo, i);
|
BindMethod(generator, columnInfo, i);
|
||||||
generator.Emit(OpCodes.Callvirt, propertyInfo.GetSetMethod());
|
generator.Emit(OpCodes.Callvirt, columnInfo.PropertyInfo.GetSetMethod());
|
||||||
generator.MarkLabel(endIfLabel);
|
generator.MarkLabel(endIfLabel);
|
||||||
}
|
}
|
||||||
private void BindMethod(ILGenerator generator, PropertyInfo bindProperty, int ordinal)
|
private void BindMethod(ILGenerator generator, EntityColumnInfo columnInfo, int ordinal)
|
||||||
{
|
{
|
||||||
IDbBind bind = Context.Ado.DbBind;
|
IDbBind bind = Context.Ado.DbBind;
|
||||||
bool isNullableType = false;
|
bool isNullableType = false;
|
||||||
MethodInfo method = null;
|
MethodInfo method = null;
|
||||||
Type bindPropertyType = UtilMethods.GetUnderType(bindProperty, ref isNullableType);
|
Type bindPropertyType = UtilMethods.GetUnderType(columnInfo.PropertyInfo, ref isNullableType);
|
||||||
string dbTypeName = UtilMethods.GetParenthesesValue(DataRecord.GetDataTypeName(ordinal));
|
string dbTypeName = UtilMethods.GetParenthesesValue(DataRecord.GetDataTypeName(ordinal));
|
||||||
if (dbTypeName.IsNullOrEmpty()) {
|
if (dbTypeName.IsNullOrEmpty()) {
|
||||||
dbTypeName = bindPropertyType.Name;
|
dbTypeName = bindPropertyType.Name;
|
||||||
}
|
}
|
||||||
string propertyName = bindProperty.Name;
|
string propertyName = columnInfo.PropertyName;
|
||||||
string validPropertyName = bind.GetPropertyTypeName(dbTypeName);
|
string validPropertyName = bind.GetPropertyTypeName(dbTypeName);
|
||||||
validPropertyName = validPropertyName == "byte[]" ? "byteArray" : validPropertyName;
|
validPropertyName = validPropertyName == "byte[]" ? "byteArray" : validPropertyName;
|
||||||
CSharpDataType validPropertyType = (CSharpDataType)Enum.Parse(typeof(CSharpDataType), validPropertyName);
|
CSharpDataType validPropertyType = (CSharpDataType)Enum.Parse(typeof(CSharpDataType), validPropertyName);
|
||||||
@ -195,7 +195,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
method = getValueMethod;
|
method = getValueMethod;
|
||||||
generator.Emit(OpCodes.Call, method);
|
generator.Emit(OpCodes.Call, method);
|
||||||
generator.Emit(OpCodes.Unbox_Any, bindProperty.PropertyType);
|
generator.Emit(OpCodes.Unbox_Any, columnInfo.PropertyInfo.PropertyType);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -302,7 +302,7 @@ namespace SqlSugar
|
|||||||
generator.Emit(OpCodes.Call, method);
|
generator.Emit(OpCodes.Call, method);
|
||||||
if (method == getValueMethod)
|
if (method == getValueMethod)
|
||||||
{
|
{
|
||||||
generator.Emit(OpCodes.Unbox_Any, bindProperty.PropertyType);
|
generator.Emit(OpCodes.Unbox_Any, columnInfo.PropertyInfo.PropertyType);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user