This commit is contained in:
sunkaixuan
2017-04-23 15:00:16 +08:00
parent b64a5d187c
commit c10771835c

View File

@@ -145,14 +145,14 @@ namespace SqlSugar
List<string> dateThrow = bind.DateThrow; List<string> dateThrow = bind.DateThrow;
List<string> shortThrow = bind.ShortThrow; List<string> shortThrow = bind.ShortThrow;
MethodInfo method = null; MethodInfo method = null;
var typeName = bind.ChangeDBTypeToCSharpType(dbTypeName); var transformedPropertyName = bind.ChangeDBTypeToCSharpType(dbTypeName);
var objTypeName = bindType.Name.ToLower(); var objTypeName = bindType.Name.ToLower();
var isEnum = bindType.IsEnum; var isEnum = bindType.IsEnum;
if (isEnum) if (isEnum)
{ {
typeName = "enum"; transformedPropertyName = "enum";
} }
else if (typeName.IsIn("byte[]", "other", "object") || dbTypeName.Contains("hierarchyid")) else if (transformedPropertyName.IsIn("byte[]", "other", "object") || dbTypeName.Contains("hierarchyid"))
{ {
generator.Emit(OpCodes.Call, getValueMethod); generator.Emit(OpCodes.Call, getValueMethod);
generator.Emit(OpCodes.Unbox_Any, bindProperty.PropertyType); generator.Emit(OpCodes.Unbox_Any, bindProperty.PropertyType);
@@ -160,10 +160,10 @@ namespace SqlSugar
} }
if (isNullableType) if (isNullableType)
{ {
switch (typeName) switch (transformedPropertyName)
{ {
case "int": case "int":
CheckType(intThrow, objTypeName, typeName, propertyName); CheckType(intThrow, objTypeName, transformedPropertyName, propertyName);
var isNotInt = objTypeName != "int32"; var isNotInt = objTypeName != "int32";
if (isNotInt) if (isNotInt)
method = getOtherNull.MakeGenericMethod(bindType); method = getOtherNull.MakeGenericMethod(bindType);
@@ -175,30 +175,30 @@ namespace SqlSugar
else else
method = getConvertBoolean; break; method = getConvertBoolean; break;
case "string": case "string":
CheckType(stringThrow, objTypeName, typeName, propertyName); CheckType(stringThrow, objTypeName, transformedPropertyName, propertyName);
method = getString; break; method = getString; break;
case "dateTime": case "dateTime":
CheckType(dateThrow, objTypeName, typeName, propertyName); CheckType(dateThrow, objTypeName, transformedPropertyName, propertyName);
if (objTypeName != "datetime") if (objTypeName != "datetime")
method = getOtherNull.MakeGenericMethod(bindType); method = getOtherNull.MakeGenericMethod(bindType);
else else
method = getConvertDateTime; break; method = getConvertDateTime; break;
case "decimal": case "decimal":
CheckType(decimalThrow, objTypeName, typeName, propertyName); CheckType(decimalThrow, objTypeName, transformedPropertyName, propertyName);
var isNotDecimal = objTypeName != "decimal"; var isNotDecimal = objTypeName != "decimal";
if (isNotDecimal) if (isNotDecimal)
method = getOtherNull.MakeGenericMethod(bindType); method = getOtherNull.MakeGenericMethod(bindType);
else else
method = getConvertDecimal; break; method = getConvertDecimal; break;
case "double": case "double":
CheckType(doubleThrow, objTypeName, typeName, propertyName); CheckType(doubleThrow, objTypeName, transformedPropertyName, propertyName);
var isNotDouble = objTypeName != "double"; var isNotDouble = objTypeName != "double";
if (isNotDouble) if (isNotDouble)
method = getOtherNull.MakeGenericMethod(bindType); method = getOtherNull.MakeGenericMethod(bindType);
else else
method = getConvertDouble; break; method = getConvertDouble; break;
case "guid": case "guid":
CheckType(guidThrow, objTypeName, typeName, propertyName); CheckType(guidThrow, objTypeName, transformedPropertyName, propertyName);
if (objTypeName != "guid") if (objTypeName != "guid")
method = getOtherNull.MakeGenericMethod(bindType); method = getOtherNull.MakeGenericMethod(bindType);
else else
@@ -208,7 +208,7 @@ namespace SqlSugar
case "enum": case "enum":
method = getConvertEnum_Null.MakeGenericMethod(bindType); break; method = getConvertEnum_Null.MakeGenericMethod(bindType); break;
case "short": case "short":
CheckType(shortThrow, objTypeName, typeName, propertyName); CheckType(shortThrow, objTypeName, transformedPropertyName, propertyName);
var isNotShort = objTypeName != "int16" && objTypeName != "short"; var isNotShort = objTypeName != "int16" && objTypeName != "short";
if (isNotShort) if (isNotShort)
method = getOtherNull.MakeGenericMethod(bindType); method = getOtherNull.MakeGenericMethod(bindType);
@@ -222,10 +222,10 @@ namespace SqlSugar
} }
else else
{ {
switch (typeName) switch (transformedPropertyName)
{ {
case "int": case "int":
CheckType(intThrow, objTypeName, typeName, propertyName); CheckType(intThrow, objTypeName, transformedPropertyName, propertyName);
var isNotInt = objTypeName != "int32"; var isNotInt = objTypeName != "int32";
if (isNotInt) if (isNotInt)
method = getOther.MakeGenericMethod(bindType); method = getOther.MakeGenericMethod(bindType);
@@ -237,30 +237,30 @@ namespace SqlSugar
else else
method = getBoolean; break; method = getBoolean; break;
case "string": case "string":
CheckType(stringThrow, objTypeName, typeName, propertyName); CheckType(stringThrow, objTypeName, transformedPropertyName, propertyName);
method = getString; break; method = getString; break;
case "dateTime": case "dateTime":
CheckType(dateThrow, objTypeName, typeName, propertyName); CheckType(dateThrow, objTypeName, transformedPropertyName, propertyName);
if (objTypeName != "datetime") if (objTypeName != "datetime")
method = getOther.MakeGenericMethod(bindType); method = getOther.MakeGenericMethod(bindType);
else else
method = getDateTime; break; method = getDateTime; break;
case "decimal": case "decimal":
CheckType(decimalThrow, objTypeName, typeName, propertyName); CheckType(decimalThrow, objTypeName, transformedPropertyName, propertyName);
var isNotDecimal = objTypeName != "decimal"; var isNotDecimal = objTypeName != "decimal";
if (isNotDecimal) if (isNotDecimal)
method = getOther.MakeGenericMethod(bindType); method = getOther.MakeGenericMethod(bindType);
else else
method = getDecimal; break; method = getDecimal; break;
case "double": case "double":
CheckType(doubleThrow, objTypeName, typeName, propertyName); CheckType(doubleThrow, objTypeName, transformedPropertyName, propertyName);
var isNotDouble = objTypeName != "double"; var isNotDouble = objTypeName != "double";
if (isNotDouble) if (isNotDouble)
method = getOther.MakeGenericMethod(bindType); method = getOther.MakeGenericMethod(bindType);
else else
method = getDouble; break; method = getDouble; break;
case "guid": case "guid":
CheckType(guidThrow, objTypeName, typeName, propertyName); CheckType(guidThrow, objTypeName, transformedPropertyName, propertyName);
if (objTypeName != "guid") if (objTypeName != "guid")
method = getOther.MakeGenericMethod(bindType); method = getOther.MakeGenericMethod(bindType);
else else
@@ -270,7 +270,7 @@ namespace SqlSugar
case "enum": case "enum":
method = getEnum; break; method = getEnum; break;
case "short": case "short":
CheckType(shortThrow, objTypeName, typeName, propertyName); CheckType(shortThrow, objTypeName, transformedPropertyName, propertyName);
var isNotShort = objTypeName != "int16" && objTypeName != "short"; var isNotShort = objTypeName != "int16" && objTypeName != "short";
if (isNotShort) if (isNotShort)
method = getOther.MakeGenericMethod(bindType); method = getOther.MakeGenericMethod(bindType);