- 修复 MySql Set 类型空格处理问题;#1059

This commit is contained in:
2881099 2022-03-29 20:17:13 +08:00
parent 1e3506e7d8
commit 4cf47488d4
3 changed files with 45 additions and 2 deletions

View File

@ -11,6 +11,49 @@ namespace FreeSql.Tests.MySql
{ {
public class MySqlCodeFirstTest 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<TestTable009>().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<TestTable009>().Where(i => (i.ColSetTest & SetTest009.A) == SetTest009.A).ToSql();
var sql3 = fsql.Select<TestTable009>().Where(i => (i.ColSetTest & SetTest009.C) == SetTest009.C).ToSql();
}
[Fact] [Fact]
public void InsertUpdateParameter() public void InsertUpdateParameter()
{ {

View File

@ -50,7 +50,7 @@ namespace FreeSql.MySql
else if (param is char) else if (param is char)
return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace('\0', ' '), "'"); return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace('\0', ' '), "'");
else if (param is Enum) 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)) else if (decimal.TryParse(string.Concat(param), out var trydec))
return param; return param;
else if (param is DateTime || param is DateTime?) else if (param is DateTime || param is DateTime?)

View File

@ -46,7 +46,7 @@ namespace FreeSql.Odbc.MySql
else if (param is char) else if (param is char)
return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace('\0', ' '), "'"); return string.Concat("'", param.ToString().Replace("'", "''").Replace("\\", "\\\\").Replace('\0', ' '), "'");
else if (param is Enum) 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)) else if (decimal.TryParse(string.Concat(param), out var trydec))
return param; return param;
else if (param is DateTime || param is DateTime?) else if (param is DateTime || param is DateTime?)