mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-24 03:32:50 +08:00
110 lines
4.5 KiB
C#
110 lines
4.5 KiB
C#
using System.Collections.Generic;
|
|
using Xunit;
|
|
|
|
namespace FreeSql.Tests.Issues
|
|
{
|
|
public class _1137
|
|
{
|
|
[Fact]
|
|
public void ListContains()
|
|
{
|
|
using (var fsql = new FreeSqlBuilder()
|
|
.UseConnectionString(DataType.Sqlite, "data source=:memory:")
|
|
.UseGenerateCommandParameterWithLambda(true)
|
|
.Build())
|
|
{
|
|
fsql.Aop.ConfigEntityProperty += (s, e) =>
|
|
{
|
|
if (e.Property.PropertyType.IsEnum)
|
|
e.ModifyResult.MapType = typeof(int);
|
|
};
|
|
var listEnum = new List<UserType> { UserType.Client };
|
|
var sql = fsql.Select<User>().Where(a => listEnum.Contains(a.Type)).ToSql(a => a);
|
|
Assert.Equal(@"SELECT a.""Type"" as1
|
|
FROM ""User"" a
|
|
WHERE (((a.""Type"") in (1)))", sql);
|
|
}
|
|
|
|
using (var fsql = new FreeSqlBuilder()
|
|
.UseConnectionString(DataType.Sqlite, "data source=:memory:")
|
|
.UseGenerateCommandParameterWithLambda(true)
|
|
.Build())
|
|
{
|
|
fsql.CodeFirst.ConfigEntity<User>(a => { });
|
|
fsql.Aop.ConfigEntityProperty += (s, e) =>
|
|
{
|
|
if (e.Property.PropertyType.IsEnum)
|
|
e.ModifyResult.MapType = typeof(string);
|
|
};
|
|
var listEnum = new List<UserType> { UserType.Client };
|
|
var sql = fsql.Select<User>().Where(a => listEnum.Contains(a.Type)).ToSql(a => a);
|
|
Assert.Equal(@"SELECT a.""Type"" as1
|
|
FROM ""User"" a
|
|
WHERE (((a.""Type"") in ('Client')))", sql);
|
|
}
|
|
|
|
using (var fsql = new FreeSqlBuilder()
|
|
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=5;Allow User Variables=True")
|
|
.UseGenerateCommandParameterWithLambda(true)
|
|
.Build())
|
|
{
|
|
fsql.CodeFirst.Entity<User>(a => a.ToTable("issues1137_user"));
|
|
var listEnum = new List<UserType> { UserType.Client };
|
|
var sql = fsql.Select<User>().Where(a => listEnum.Contains(a.Type)).ToSql(a => a);
|
|
Assert.Equal(@"SELECT a.`Type` as1
|
|
FROM `issues1137_user` a
|
|
WHERE (((a.`Type`) in ('Client')))", sql);
|
|
}
|
|
|
|
using (var fsql = new FreeSqlBuilder()
|
|
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=5;Allow User Variables=True")
|
|
.UseGenerateCommandParameterWithLambda(true)
|
|
.Build())
|
|
{
|
|
fsql.CodeFirst.Entity<User>(a => a.ToTable("issues1137_user"));
|
|
fsql.Aop.ConfigEntityProperty += (s, e) =>
|
|
{
|
|
if (e.Property.PropertyType.IsEnum)
|
|
e.ModifyResult.MapType = typeof(int);
|
|
};
|
|
var listEnum = new List<UserType> { UserType.Client };
|
|
var sql = fsql.Select<User>().Where(a => listEnum.Contains(a.Type)).ToSql(a => a);
|
|
Assert.Equal(@"SELECT a.`Type` as1
|
|
FROM `issues1137_user` a
|
|
WHERE (((a.`Type`) in (1)))", sql);
|
|
}
|
|
|
|
using (var fsql = new FreeSqlBuilder()
|
|
.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=5;Allow User Variables=True")
|
|
.UseGenerateCommandParameterWithLambda(true)
|
|
.Build())
|
|
{
|
|
fsql.CodeFirst.Entity<User>(a => a.ToTable("issues1137_user"));
|
|
fsql.Aop.ConfigEntityProperty += (s, e) =>
|
|
{
|
|
if (e.Property.PropertyType.IsEnum)
|
|
e.ModifyResult.MapType = typeof(string);
|
|
};
|
|
var listEnum = new List<UserType> { UserType.Client };
|
|
var sql = fsql.Select<User>().Where(a => listEnum.Contains(a.Type)).ToSql(a => a);
|
|
Assert.Equal(@"SELECT a.`Type` as1
|
|
FROM `issues1137_user` a
|
|
WHERE (((a.`Type`) in ('Client')))", sql);
|
|
}
|
|
}
|
|
|
|
public enum UserType
|
|
{
|
|
Client = 1,
|
|
Internal = 2
|
|
}
|
|
public class User
|
|
{
|
|
public UserType Type { get; set; }
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|