From 1f2d4abdc723248135914d9840a866dca485cd06 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Wed, 9 Oct 2019 16:56:24 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20=E6=9E=9A=E4=B8=BE?=
=?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=9A=84=E9=BB=98=E8=AE=A4=E5=80=BC=E5=AE=B9?=
=?UTF-8?q?=E9=94=99=EF=BC=8C=E6=9E=9A=E4=B8=BE=E4=B8=8B=E6=A0=87=E4=B8=8D?=
=?UTF-8?q?=E5=AD=98=E5=9C=A8=200=20=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8Cmy?=
=?UTF-8?q?sql=20=E8=BF=81=E7=A7=BB=E7=BB=93=E6=9E=84=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=80=BC=E6=8A=A5=E9=94=99=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../UnitTest1.cs | 37 +++++++++++++++++++
FreeSql.Tests/FreeSql.Tests/UnitTest1.cs | 8 ++++
FreeSql/Internal/UtilsExpressionTree.cs | 13 +++++++
3 files changed, 58 insertions(+)
create mode 100644 FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/UnitTest1.cs
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)