- 优化 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,8 +252,12 @@ namespace FreeSql.Internal
if (entityDefault != null) defaultValue = trytb.Properties[csName].GetValue(entityDefault, null);
if (defaultValue != null && mapType.IsEnum)
{
Array enumValues = null;
try { enumValues = Enum.GetValues(mapType); } //AOT error
catch { }
if (enumValues != null)
{
var isEqualsEnumValue = false;
var enumValues = Enum.GetValues(mapType);
for (var a = 0; a < enumValues.Length; a++)
if (object.Equals(defaultValue, enumValues.GetValue(a)))
{
@ -262,6 +266,7 @@ namespace FreeSql.Internal
}
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) defaultValue = tp?.defaultValue;