- 优化 AOT 默认导致 Enum.GetValues 报错的问题;#1691

This commit is contained in:
2881099 2023-12-17 12:31:15 +08:00
parent 29e3635f1b
commit 231d5ac555

View File

@ -252,16 +252,21 @@ namespace FreeSql.Internal
if (entityDefault != null) defaultValue = trytb.Properties[csName].GetValue(entityDefault, null); if (entityDefault != null) defaultValue = trytb.Properties[csName].GetValue(entityDefault, null);
if (defaultValue != null && mapType.IsEnum) if (defaultValue != null && mapType.IsEnum)
{ {
var isEqualsEnumValue = false; Array enumValues = null;
var enumValues = Enum.GetValues(mapType); try { enumValues = Enum.GetValues(mapType); } //AOT error
for (var a = 0; a < enumValues.Length; a++) catch { }
if (object.Equals(defaultValue, enumValues.GetValue(a))) if (enumValues != null)
{ {
isEqualsEnumValue = true; var isEqualsEnumValue = false;
break; for (var a = 0; a < enumValues.Length; a++)
} if (object.Equals(defaultValue, enumValues.GetValue(a)))
if (isEqualsEnumValue == false && enumValues.Length > 0) {
defaultValue = enumValues.GetValue(0); isEqualsEnumValue = true;
break;
}
if (isEqualsEnumValue == false && enumValues.Length > 0)
defaultValue = enumValues.GetValue(0);
}
} }
if (defaultValue != null && mapType != colattr.MapType) defaultValue = Utils.GetDataReaderValue(colattr.MapType, defaultValue); if (defaultValue != null && mapType != colattr.MapType) defaultValue = Utils.GetDataReaderValue(colattr.MapType, defaultValue);
if (defaultValue == null) defaultValue = tp?.defaultValue; if (defaultValue == null) defaultValue = tp?.defaultValue;