diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs index 7134cc76..76e2ed88 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlCodeFirstTest.cs @@ -11,6 +11,49 @@ namespace FreeSql.Tests.MySql { public class MySqlCodeFirstTest { + public enum EnumTest009 + { + A, B, C + } + + [Flags] + public enum SetTest009 + { + A = 1, B = 2, C = 4 + } + + public class TestTable009 + { + [Column(IsPrimary = true, IsIdentity = true)] + public int Id { get; set; } + + public EnumTest009 ColEnumTest { get; set; } + + public SetTest009 ColSetTest { get; set; } + } + + [Fact] + public void TestEnumToSet009() + { + var fsql = g.mysql; + //插入 + //insert into TestTable(ColEnumTest,ColSetTest) values('B','A,B'); + //insert into TestTable(ColEnumTest,ColSetTest) values(1,3); + var sql1 = fsql.Insert().NoneParameter().AppendData(new TestTable009 + { + ColEnumTest = EnumTest009.B, + ColSetTest = SetTest009.A | SetTest009.B + }).ToSql(); + Assert.Equal("INSERT INTO `TestTable009`(`ColEnumTest`, `ColSetTest`) VALUES('B', 'A,B')", sql1); + + //查询 扩展方法 contains + //select * from TestTable t where FIND_IN_SET('A',t.ColSetTest)>0 + //select * from TestTable t where t.ColSetTest&1 + var sql2 = fsql.Select().Where(i => (i.ColSetTest & SetTest009.A) == SetTest009.A).ToSql(); + var sql3 = fsql.Select().Where(i => (i.ColSetTest & SetTest009.C) == SetTest009.C).ToSql(); + } + + [Fact] public void InsertUpdateParameter() { diff --git a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs index bacef5e6..68fa8b2c 100644 --- a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs +++ b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs @@ -50,7 +50,7 @@ namespace FreeSql.MySql else if (param is char) return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace('\0', ' '), "'"); else if (param is Enum) - return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); //((Enum)val).ToInt64(); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace(", ", ","), "'"); //((Enum)val).ToInt64(); else if (decimal.TryParse(string.Concat(param), out var trydec)) return param; else if (param is DateTime || param is DateTime?) diff --git a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs index 33c32a63..3d017af9 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/OdbcMySqlAdo/OdbcMySqlAdo.cs @@ -46,7 +46,7 @@ namespace FreeSql.Odbc.MySql else if (param is char) return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace('\0', ' '), "'"); else if (param is Enum) - return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\"), "'"); //((Enum)val).ToInt64(); + return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace(", ", ","), "'"); //((Enum)val).ToInt64(); else if (decimal.TryParse(string.Concat(param), out var trydec)) return param; else if (param is DateTime || param is DateTime?)