diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/UnitTest1.cs new file mode 100644 index 00000000..d3300f9b --- /dev/null +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/UnitTest1.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Xunit; + +namespace FreeSql.Tests.MySqlConnector +{ + + public class UnitTest1 + { + public class TestAddEnum + { + public Guid Id { get; set; } + public TestAddEnumType Type { get; set; } + public PermissionTypeEnum TestType { get; set; } + } + public enum TestAddEnumType { 中国人, 日本人 } + + public enum PermissionTypeEnum + { + /// + /// 菜单 + /// + Menu = 1, + /// + /// 接口 + /// + Api = 2 + } + + [Fact] + public void Test1() + { + g.mysql.Select().ToList(); + } + } +} diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs index 13ed35bc..7010bd98 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs @@ -408,10 +408,18 @@ namespace FreeSql.Tests public Guid? Id { get; set; } public string xxx { get; set; } } + public class TestAddEnum + { + public Guid Id { get; set; } + public TestAddEnumType Type { get; set; } + } + public enum TestAddEnumType { 中国人, 日本人 } [Fact] public void Test1() { + g.mysql.Select().ToList(); + g.sqlite.Insert(new TestGuidId { xxx = "111" }).ExecuteAffrows(); g.sqlite.Insert(new TestGuidId { xxx = "222" }).ExecuteAffrows(); var gkkdk1 = g.sqlite.Select().Where(a => true).ToList(); diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs index 862c3b62..c73f3700 100644 --- a/FreeSql/Internal/UtilsExpressionTree.cs +++ b/FreeSql/Internal/UtilsExpressionTree.cs @@ -153,6 +153,19 @@ namespace FreeSql.Internal continue; } if (entityDefault != null) colattr.DbDefautValue = trytb.Properties[p.Name].GetValue(entityDefault); + if (p.PropertyType.IsEnum) + { + var isEqualsEnumValue = false; + var enumValues = Enum.GetValues(p.PropertyType); + for (var a = 0; a < enumValues.Length; a++) + if (object.Equals(colattr.DbDefautValue, enumValues.GetValue(a))) + { + isEqualsEnumValue = true; + break; + } + if (isEqualsEnumValue == false) + colattr.DbDefautValue = enumValues.Length > 0 ? enumValues.GetValue(0) : null; + } if (colattr.DbDefautValue != null && p.PropertyType != colattr.MapType) colattr.DbDefautValue = Utils.GetDataReaderValue(colattr.MapType, colattr.DbDefautValue); if (colattr.DbDefautValue == null) colattr.DbDefautValue = tp?.defaultValue; if (colattr.IsNullable == false && colattr.DbDefautValue == null)