内部 SQL 格式优化

This commit is contained in:
28810 2020-07-18 13:50:26 +08:00
parent 8d11993e6c
commit 7471df5924
58 changed files with 1265 additions and 1249 deletions

View File

@ -125,6 +125,13 @@
清空状态数据 清空状态数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)"> <member name="M:FreeSql.DbSet`1.Add(`0)">
<summary> <summary>
添加 添加
@ -479,5 +486,14 @@
<param name="that"></param> <param name="that"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@ -13,63 +13,63 @@ using Newtonsoft.Json;
using FreeSql.DataAnnotations; using FreeSql.DataAnnotations;
namespace FreeSql.Jhfw.Models { namespace FreeSql.Jhfw.Models {
public interface IBaseModel<TKey> public interface IBaseModel<TKey>
{ {
TKey Id { get; set; } TKey Id { get; set; }
} }
[JsonObject(MemberSerialization.OptIn), Table(Name = "bank_outlets")] [JsonObject(MemberSerialization.OptIn), Table(Name = "bank_outlets")]
public partial class BankOutlets : IBaseModel<int> public partial class BankOutlets : IBaseModel<int>
{ {
[JsonProperty] [JsonProperty]
public int? BankId { get => _BankId; set { public int? BankId { get => _BankId; set {
if (_BankId == value) return; if (_BankId == value) return;
_BankId = value; _BankId = value;
OneBanks = null; OneBanks = null;
}} }}
private int? _BankId; private int? _BankId;
[JsonProperty] [JsonProperty]
public int? ParentId { get => _ParentId; set { public int? ParentId { get => _ParentId; set {
if (_ParentId == value) return; if (_ParentId == value) return;
_ParentId = value; _ParentId = value;
OneBankOutlets = null; OneBankOutlets = null;
}} }}
private int? _ParentId; private int? _ParentId;
[JsonProperty] [JsonProperty]
public string Address { get; set; } = ""; public string Address { get; set; } = "";
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Area { get; set; } = ""; public string Area { get; set; } = "";
[JsonProperty, Column(Name = "ID", IsIdentity = true)] [JsonProperty, Column(Name = "ID", IsIdentity = true)]
public int Id { get; set; } public int Id { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Name { get; set; } = ""; public string Name { get; set; } = "";
#region => ManyToOne/OneToOne #region => ManyToOne/OneToOne
[Navigate("BankId")] [Navigate("BankId")]
public virtual Banks OneBanks { get; set; } public virtual Banks OneBanks { get; set; }
[Navigate("ParentId")] [Navigate("ParentId")]
public virtual BankOutlets OneBankOutlets { get; set; } public virtual BankOutlets OneBankOutlets { get; set; }
#endregion #endregion
#region => OneToMany #region => OneToMany
[Navigate("ParentId")] [Navigate("ParentId")]
public virtual List<BankOutlets> ManyBankOutlets { get; set; } public virtual List<BankOutlets> ManyBankOutlets { get; set; }
#endregion #endregion
#region => ManyToMany #region => ManyToMany
#endregion #endregion
} }
} }

View File

@ -13,54 +13,54 @@ using Newtonsoft.Json;
using FreeSql.DataAnnotations; using FreeSql.DataAnnotations;
namespace FreeSql.Jhfw.Models { namespace FreeSql.Jhfw.Models {
[JsonObject(MemberSerialization.OptIn), Table(Name = "banks")] [JsonObject(MemberSerialization.OptIn), Table(Name = "banks")]
public partial class Banks : IBaseModel<int> public partial class Banks : IBaseModel<int>
{ {
[JsonProperty, Column(DbType = "datetime")] [JsonProperty, Column(DbType = "datetime")]
public DateTime? Addtime { get; set; } public DateTime? Addtime { get; set; }
[JsonProperty, Column(DbType = "varchar(250)")] [JsonProperty, Column(DbType = "varchar(250)")]
public string Banner { get; set; } = ""; public string Banner { get; set; } = "";
[JsonProperty, Column(DbType = "varchar(20)")] [JsonProperty, Column(DbType = "varchar(20)")]
public string City { get; set; } = ""; public string City { get; set; } = "";
[JsonProperty, Column(Name = "ID", IsIdentity = true)] [JsonProperty, Column(Name = "ID", IsIdentity = true)]
public int Id { get; set; } public int Id { get; set; }
[JsonProperty, Column(DbType = "tinyint(1)")] [JsonProperty, Column(DbType = "tinyint(1)")]
public bool IsDelete { get; set; } public bool IsDelete { get; set; }
[JsonProperty, Column(DbType = "tinyint(1)")] [JsonProperty, Column(DbType = "tinyint(1)")]
public bool IsGrab { get; set; } public bool IsGrab { get; set; }
[JsonProperty, Column(DbType = "tinyint(1)")] [JsonProperty, Column(DbType = "tinyint(1)")]
public bool IsJoinHmd { get; set; } public bool IsJoinHmd { get; set; }
[JsonProperty, Column(DbType = "varchar(100)")] [JsonProperty, Column(DbType = "varchar(100)")]
public string LoanType { get; set; } = ""; public string LoanType { get; set; } = "";
[JsonProperty, Column(DbType = "varchar(250)")] [JsonProperty, Column(DbType = "varchar(250)")]
public string Logo { get; set; } = ""; public string Logo { get; set; } = "";
[JsonProperty] [JsonProperty]
public string Name { get; set; } = ""; public string Name { get; set; } = "";
[JsonProperty, Column(DbType = "varchar(3000)")] [JsonProperty, Column(DbType = "varchar(3000)")]
public string Notice { get; set; } = ""; public string Notice { get; set; } = "";
#region => OneToMany #region => OneToMany
[Navigate("BankId")] [Navigate("BankId")]
public virtual List<BankOutlets> ManyBankOutlets { get; set; } public virtual List<BankOutlets> ManyBankOutlets { get; set; }
#endregion #endregion
#region => ManyToMany #region => ManyToMany
#endregion #endregion
} }
} }

View File

@ -19,81 +19,81 @@ namespace FreeSql.Tests.MySqlConnector
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -111,81 +111,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -221,27 +221,27 @@ UNION ALL
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '100002' SELECT 2, '100002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '100003' SELECT 3, '100003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '100004' SELECT 4, '100004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1) limit 0,1)
; ;
@ -265,81 +265,81 @@ INSERT INTO `tbioudb022`(`name`) VALUES('00001'), ('00002'), ('00003'), ('00004'
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '02' SELECT 2, '02', '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '03' SELECT 3, '03', '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 3 AND a.`id2` = '03') WHERE (a.`id1` = 3 AND a.`id2` = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '04' SELECT 4, '04', '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 4 AND a.`id2` = '04') WHERE (a.`id1` = 4 AND a.`id2` = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '002' SELECT 2, '02', '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '003' SELECT 3, '03', '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 3 AND a.`id2` = '03') WHERE (a.`id1` = 3 AND a.`id2` = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '004' SELECT 4, '04', '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 4 AND a.`id2` = '04') WHERE (a.`id1` = 4 AND a.`id2` = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList(); var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count());
@ -361,81 +361,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', 0, now(3) SELECT 2, '02', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', 0, now(3) SELECT 3, '03', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', 0, now(3) SELECT 4, '04', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002', 0, now(3) SELECT 2, '002', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003', 0, now(3) SELECT 3, '003', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004', 0, now(3) SELECT 4, '004', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());

View File

@ -104,22 +104,22 @@ namespace FreeSql.Tests.MySqlConnector
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -203,9 +203,9 @@ namespace FreeSql.Tests.MySqlConnector
var sql3 = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid").ToSql(); var sql3 = select.LeftJoin("TestTypeInfo b on b.Guid = a.TypeGuid").ToSql();
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
@ -929,8 +929,8 @@ namespace FreeSql.Tests.MySqlConnector
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -947,8 +947,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -965,8 +965,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -983,8 +983,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -999,7 +999,7 @@ FROM `tb_topic` a", subquery);
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
FROM `tb_topic` a FROM `tb_topic` a
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title` WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
FROM `tb_topic` b)))", subquery); FROM `tb_topic` b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1077,12 +1077,12 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -96,22 +96,22 @@ namespace FreeSql.Tests.Odbc.Dameng
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.dameng.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.dameng.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -855,8 +855,8 @@ namespace FreeSql.Tests.Odbc.Dameng
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -873,8 +873,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -891,8 +891,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -909,8 +909,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -925,7 +925,7 @@ FROM ""TB_TOPIC22"" a", subquery);
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME"" Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
FROM ""TB_TOPIC22"" a FROM ""TB_TOPIC22"" a
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE"" WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
FROM ""TB_TOPIC22"" b)))", subquery); FROM ""TB_TOPIC22"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1004,12 +1004,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -85,22 +85,22 @@ namespace FreeSql.Tests.Odbc.Default
//SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name] //SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name]
//FROM [Tag] a //FROM [Tag] a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id] // LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id]
// WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id]) // WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id])
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.odbc.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.odbc.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url] //SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url]
//FROM [Song] a //FROM [Song] a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM [Song_tag] Mt_Ms // FROM [Song_tag] Mt_Ms
// WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1 // WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id]) // WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id])
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -830,7 +830,7 @@ namespace FreeSql.Tests.Odbc.Default
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -847,7 +847,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 min(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 min(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -864,7 +864,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 max(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 max(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -881,7 +881,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -896,7 +896,7 @@ FROM [tb_topic22] a", subquery);
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
FROM [tb_topic22] a FROM [tb_topic22] a
WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title] WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
FROM [tb_topic22] b)))", subquery); FROM [tb_topic22] b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -974,12 +974,12 @@ WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -45,20 +45,20 @@ namespace FreeSql.Tests.Odbc.Default
{ {
//var tt1 = g.odbc.Select<xxx>() //var tt1 = g.odbc.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var tt2result = g.odbc.Select<xxx>() //var tt2result = g.odbc.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
//var tt = g.odbc.Select<xxx>() //var tt = g.odbc.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var ttresult = g.odbc.Select<xxx>() //var ttresult = g.odbc.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
var tnsql1 = g.odbc.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); var tnsql1 = g.odbc.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);

View File

@ -27,62 +27,62 @@
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ArticleId"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ArticleId">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ArticleTitle"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ArticleTitle">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.CategoryId"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.CategoryId">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ChannelId"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ChannelId">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.TypeId"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.TypeId">
<summary> <summary>
类型 类型
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Summary"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Summary">
<summary> <summary>
内容简介 内容简介
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Thumbnail"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Thumbnail">
<summary> <summary>
缩略图 缩略图
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Hits"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Hits">
<summary> <summary>
点击量 点击量
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.IsDisplay"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.IsDisplay">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Status"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.Status">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.CreateTime"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.CreateTime">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ReleaseTime"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.NewsArticle.ReleaseTime">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.Odbc.UnitTest1.Templates.Id2"> <member name="P:FreeSql.Tests.Odbc.UnitTest1.Templates.Id2">
<summary> <summary>

View File

@ -96,22 +96,22 @@ namespace FreeSql.Tests.Odbc.KingbaseES
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.kingbaseES.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.kingbaseES.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -820,8 +820,8 @@ namespace FreeSql.Tests.Odbc.KingbaseES
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -838,8 +838,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -856,8 +856,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -874,8 +874,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -890,7 +890,7 @@ FROM ""TB_TOPIC22"" a", subquery);
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME"" Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
FROM ""TB_TOPIC22"" a FROM ""TB_TOPIC22"" a
WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE"" WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
FROM ""TB_TOPIC22"" b)))", subquery); FROM ""TB_TOPIC22"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -969,12 +969,12 @@ WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -19,81 +19,81 @@ namespace FreeSql.Tests.Odbc.MySql
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -111,81 +111,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -221,27 +221,27 @@ UNION ALL
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '100002' SELECT 2, '100002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '100003' SELECT 3, '100003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '100004' SELECT 4, '100004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1) limit 0,1)
; ;
@ -265,81 +265,81 @@ INSERT INTO `tbioudb022`(`name`) VALUES('00001'), ('00002'), ('00003'), ('00004'
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '02' SELECT 2, '02', '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '03' SELECT 3, '03', '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 3 AND a.`id2` = '03') WHERE (a.`id1` = 3 AND a.`id2` = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '04' SELECT 4, '04', '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 4 AND a.`id2` = '04') WHERE (a.`id1` = 4 AND a.`id2` = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '002' SELECT 2, '02', '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '003' SELECT 3, '03', '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 3 AND a.`id2` = '03') WHERE (a.`id1` = 3 AND a.`id2` = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '004' SELECT 4, '04', '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 4 AND a.`id2` = '04') WHERE (a.`id1` = 4 AND a.`id2` = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList(); var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count());
@ -361,81 +361,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', 0, now(3) SELECT 2, '02', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', 0, now(3) SELECT 3, '03', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', 0, now(3) SELECT 4, '04', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002', 0, now(3) SELECT 2, '002', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003', 0, now(3) SELECT 3, '003', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004', 0, now(3) SELECT 4, '004', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());

View File

@ -104,22 +104,22 @@ namespace FreeSql.Tests.Odbc.MySql
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -213,9 +213,9 @@ namespace FreeSql.Tests.Odbc.MySql
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
@ -940,8 +940,8 @@ namespace FreeSql.Tests.Odbc.MySql
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -958,8 +958,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -976,8 +976,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -994,8 +994,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -1010,7 +1010,7 @@ FROM `tb_topic` a", subquery);
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
FROM `tb_topic` a FROM `tb_topic` a
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title` WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
FROM `tb_topic` b)))", subquery); FROM `tb_topic` b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1088,12 +1088,12 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -96,22 +96,22 @@ namespace FreeSql.Tests.Odbc.Oracle
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.oracle.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.oracle.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -856,8 +856,8 @@ namespace FreeSql.Tests.Odbc.Oracle
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -874,8 +874,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -892,8 +892,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -910,8 +910,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -926,7 +926,7 @@ FROM ""TB_TOPIC22"" a", subquery);
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME"" Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
FROM ""TB_TOPIC22"" a FROM ""TB_TOPIC22"" a
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE"" WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
FROM ""TB_TOPIC22"" b)))", subquery); FROM ""TB_TOPIC22"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1005,12 +1005,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -86,22 +86,22 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.pgsql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.pgsql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -189,9 +189,9 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
@ -916,8 +916,8 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -934,8 +934,8 @@ FROM ""tb_topic"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -952,8 +952,8 @@ FROM ""tb_topic"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -970,8 +970,8 @@ FROM ""tb_topic"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -986,7 +986,7 @@ FROM ""tb_topic"" a", subquery);
Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime"" Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime""
FROM ""tb_topic"" a FROM ""tb_topic"" a
WHERE ((((a.""id"")::text) in (SELECT b.""title"" WHERE ((((a.""id"")::text) in (SELECT b.""title""
FROM ""tb_topic"" b)))", subquery); FROM ""tb_topic"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1064,12 +1064,12 @@ WHERE ((((a.""id"")::text) in (SELECT b.""title""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALLSELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALL SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -81,7 +81,7 @@ namespace FreeSql.Tests.Odbc.PostgreSQLExpression
public void Array() public void Array()
{ {
//g.pgsql.Aop.CurdAfter = (s, e) => { //g.pgsql.Aop.CurdAfter = (s, e) => {
// Trace.WriteLine(e.CurdType + ": " + e.ElapsedMilliseconds + "ms " + e.Sql.Replace("\n", "")); // Trace.WriteLine(e.CurdType + ": " + e.ElapsedMilliseconds + "ms " + e.Sql.Replace("\n", ""));
//}; //};
IEnumerable<int> testlinqlist = new List<int>(new[] { 1, 2, 3 }); IEnumerable<int> testlinqlist = new List<int>(new[] { 1, 2, 3 });
var testlinq = select.Where(a => testlinqlist.Contains(a.testFieldInt)).ToList(); var testlinq = select.Where(a => testlinqlist.Contains(a.testFieldInt)).ToList();

View File

@ -85,22 +85,22 @@ namespace FreeSql.Tests.Odbc.SqlServer
//SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name] //SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name]
//FROM [Tag] a //FROM [Tag] a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id] // LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id]
// WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id]) // WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id])
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.sqlserver.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.sqlserver.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url] //SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url]
//FROM [Song] a //FROM [Song] a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM [Song_tag] Mt_Ms // FROM [Song_tag] Mt_Ms
// WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1 // WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id]) // WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id])
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -811,7 +811,7 @@ namespace FreeSql.Tests.Odbc.SqlServer
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -828,7 +828,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 min(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 min(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -845,7 +845,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 max(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 max(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -862,7 +862,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -877,7 +877,7 @@ FROM [tb_topic22] a", subquery);
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
FROM [tb_topic22] a FROM [tb_topic22] a
WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title] WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
FROM [tb_topic22] b)))", subquery); FROM [tb_topic22] b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -955,12 +955,12 @@ WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -46,20 +46,20 @@ namespace FreeSql.Tests.Odbc.SqlServer
{ {
//var tt1 = g.sqlserver.Select<xxx>() //var tt1 = g.sqlserver.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var tt2result = g.sqlserver.Select<xxx>() //var tt2result = g.sqlserver.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
//var tt = g.sqlserver.Select<xxx>() //var tt = g.sqlserver.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var ttresult = g.sqlserver.Select<xxx>() //var ttresult = g.sqlserver.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
var tnsql1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); var tnsql1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);
var tnsql2 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id); var tnsql2 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id);

View File

@ -134,73 +134,73 @@ namespace FreeSql.Tests.Odbc
{ {
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "article_id", IsIdentity = true, IsPrimary = true)] [Column(Name = "article_id", IsIdentity = true, IsPrimary = true)]
public int ArticleId { get; set; } public int ArticleId { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "article_title")] [Column(Name = "article_title")]
public string ArticleTitle { get; set; } public string ArticleTitle { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "category_id")] [Column(Name = "category_id")]
public int CategoryId { get; set; } public int CategoryId { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "channel_id")] [Column(Name = "channel_id")]
public int ChannelId { get; set; } public int ChannelId { get; set; }
/// <summary> /// <summary>
/// 类型 /// 类型
/// </summary> /// </summary>
[Column(Name = "type_id")] [Column(Name = "type_id")]
public int TypeId { get; set; } public int TypeId { get; set; }
/// <summary> /// <summary>
/// 内容简介 /// 内容简介
/// </summary> /// </summary>
[Column(Name = "summary")] [Column(Name = "summary")]
public string Summary { get; set; } public string Summary { get; set; }
/// <summary> /// <summary>
/// 缩略图 /// 缩略图
/// </summary> /// </summary>
[Column(Name = "thumbnail")] [Column(Name = "thumbnail")]
public string Thumbnail { get; set; } public string Thumbnail { get; set; }
/// <summary> /// <summary>
/// 点击量 /// 点击量
/// </summary> /// </summary>
[Column(Name = "hits")] [Column(Name = "hits")]
public int Hits { get; set; } public int Hits { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "is_display")] [Column(Name = "is_display")]
public int IsDisplay { get; set; } public int IsDisplay { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "status")] [Column(Name = "status")]
public int Status { get; set; } public int Status { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "create_time")] [Column(Name = "create_time")]
public int CreateTime { get; set; } public int CreateTime { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "release_time")] [Column(Name = "release_time")]
public int ReleaseTime { get; set; } public int ReleaseTime { get; set; }
@ -475,14 +475,14 @@ WHERE ROWNUM < 11";
//var testaddlist = new List<NewsArticle>(); //var testaddlist = new List<NewsArticle>();
//for(var a = 0; a < 133905; a++) { //for(var a = 0; a < 133905; a++) {
// testaddlist.Add(new NewsArticle { // testaddlist.Add(new NewsArticle {
// ArticleTitle = "testaddlist_topic" + a, // ArticleTitle = "testaddlist_topic" + a,
// Hits = a, // Hits = a,
// }); // });
//} //}
//g.mysql.Insert<NewsArticle>(testaddlist) //g.mysql.Insert<NewsArticle>(testaddlist)
// //.NoneParameter() // //.NoneParameter()
// .ExecuteAffrows(); // .ExecuteAffrows();
g.mysql.Aop.ParseExpression += (s, e) => g.mysql.Aop.ParseExpression += (s, e) =>
@ -872,9 +872,9 @@ WHERE ROWNUM < 11";
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s

View File

@ -96,22 +96,22 @@ namespace FreeSql.Tests.Dameng
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.dameng.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.dameng.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -855,8 +855,8 @@ namespace FreeSql.Tests.Dameng
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -873,8 +873,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -891,8 +891,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -909,8 +909,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -925,7 +925,7 @@ FROM ""TB_TOPIC22"" a", subquery);
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME"" Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
FROM ""TB_TOPIC22"" a FROM ""TB_TOPIC22"" a
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE"" WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
FROM ""TB_TOPIC22"" b)))", subquery); FROM ""TB_TOPIC22"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1005,12 +1005,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -68,9 +68,9 @@ namespace FreeSql.Tests.DataAnnotations
{ {
g.mysql.CodeFirst g.mysql.CodeFirst
//.ConfigEntity<TestFluenttb1>(a => { //.ConfigEntity<TestFluenttb1>(a => {
// a.Name("xxdkdkdk1"); // a.Name("xxdkdkdk1");
// a.Property(b => b.Id).Name("Id22").IsIdentity(true); // a.Property(b => b.Id).Name("Id22").IsIdentity(true);
// a.Property(b => b.name).DbType("varchar(100)").IsNullable(true); // a.Property(b => b.name).DbType("varchar(100)").IsNullable(true);
//}) //})
.ConfigEntity(typeof(TestFluenttb1), a => .ConfigEntity(typeof(TestFluenttb1), a =>

View File

@ -41,9 +41,9 @@ namespace FreeSql.Tests.DataAnnotations
{ {
g.sqlserver.CodeFirst g.sqlserver.CodeFirst
//.ConfigEntity<TestFluenttb1>(a => { //.ConfigEntity<TestFluenttb1>(a => {
// a.Name("xxdkdkdk1"); // a.Name("xxdkdkdk1");
// a.Property(b => b.Id).Name("Id22").IsIdentity(true); // a.Property(b => b.Id).Name("Id22").IsIdentity(true);
// a.Property(b => b.name).DbType("varchar(100)").IsNullable(true); // a.Property(b => b.name).DbType("varchar(100)").IsNullable(true);
//}) //})
.ConfigEntity(typeof(TestFluenttb1), a => .ConfigEntity(typeof(TestFluenttb1), a =>

View File

@ -1,61 +1,61 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>FreeSql.Tests.xml</DocumentationFile> <DocumentationFile>FreeSql.Tests.xml</DocumentationFile>
<WarningLevel>3</WarningLevel> <WarningLevel>3</WarningLevel>
<Prefer32Bit>false</Prefer32Bit> <Prefer32Bit>false</Prefer32Bit>
<PlatformTarget>x86</PlatformTarget> <PlatformTarget>x86</PlatformTarget>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Dapper" Version="2.0.35" /> <PackageReference Include="Dapper" Version="2.0.35" />
<PackageReference Include="IdleBus" Version="1.3.0" /> <PackageReference Include="IdleBus" Version="1.3.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="DataAnnotations\MySql\" /> <Folder Include="DataAnnotations\MySql\" />
<Folder Include="DataAnnotations\SqlServer\" /> <Folder Include="DataAnnotations\SqlServer\" />
<Folder Include="DataContext\MySql\" /> <Folder Include="DataContext\MySql\" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.LazyLoading\FreeSql.Extensions.LazyLoading.csproj" /> <ProjectReference Include="..\..\Extensions\FreeSql.Extensions.LazyLoading\FreeSql.Extensions.LazyLoading.csproj" />
<ProjectReference Include="..\..\Extensions\FreeSql.Extensions.Linq\FreeSql.Extensions.Linq.csproj" /> <ProjectReference Include="..\..\Extensions\FreeSql.Extensions.Linq\FreeSql.Extensions.Linq.csproj" />
<ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" /> <ProjectReference Include="..\..\FreeSql.DbContext\FreeSql.DbContext.csproj" />
<ProjectReference Include="..\..\FreeSql\FreeSql.csproj" /> <ProjectReference Include="..\..\FreeSql\FreeSql.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Dameng\FreeSql.Provider.Dameng.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.Dameng\FreeSql.Provider.Dameng.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MsAccess\FreeSql.Provider.MsAccess.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.MsAccess\FreeSql.Provider.MsAccess.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.MySql\FreeSql.Provider.MySql.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.MySql\FreeSql.Provider.MySql.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Oracle\FreeSql.Provider.Oracle.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.Oracle\FreeSql.Provider.Oracle.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.PostgreSQL\FreeSql.Provider.PostgreSQL.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.PostgreSQL\FreeSql.Provider.PostgreSQL.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.ShenTong\FreeSql.Provider.ShenTong.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.ShenTong\FreeSql.Provider.ShenTong.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.Sqlite\FreeSql.Provider.Sqlite.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.Sqlite\FreeSql.Provider.Sqlite.csproj" />
<ProjectReference Include="..\..\Providers\FreeSql.Provider.SqlServer\FreeSql.Provider.SqlServer.csproj" /> <ProjectReference Include="..\..\Providers\FreeSql.Provider.SqlServer\FreeSql.Provider.SqlServer.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="DmProvider"> <Reference Include="DmProvider">
<HintPath>..\..\Providers\FreeSql.Provider.Dameng\lib\DmProvider\netstandard2.0\DmProvider.dll</HintPath> <HintPath>..\..\Providers\FreeSql.Provider.Dameng\lib\DmProvider\netstandard2.0\DmProvider.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Data.OscarClient"> <Reference Include="System.Data.OscarClient">
<HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\System.Data.OscarClient.dll</HintPath> <HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\System.Data.OscarClient.dll</HintPath>
</Reference> </Reference>
<Reference Include="Mono.Security"> <Reference Include="Mono.Security">
<HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\Mono.Security.dll</HintPath> <HintPath>..\..\Providers\FreeSql.Provider.ShenTong\lib\Mono.Security.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -27,62 +27,62 @@
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleId"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleId">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleTitle"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleTitle">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CategoryId"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CategoryId">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ChannelId"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ChannelId">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.TypeId"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.TypeId">
<summary> <summary>
类型 类型
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Summary"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Summary">
<summary> <summary>
内容简介 内容简介
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Thumbnail"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Thumbnail">
<summary> <summary>
缩略图 缩略图
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Hits"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Hits">
<summary> <summary>
点击量 点击量
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.IsDisplay"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.IsDisplay">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Status"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Status">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CreateTime"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CreateTime">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ReleaseTime"> <member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ReleaseTime">
<summary> <summary>
</summary> </summary>
</member> </member>
<member name="P:FreeSql.Tests.UnitTest1.Templates.Id2"> <member name="P:FreeSql.Tests.UnitTest1.Templates.Id2">
<summary> <summary>

View File

@ -85,22 +85,22 @@ namespace FreeSql.Tests.MsAccess
//SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name] //SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name]
//FROM [Tag] a //FROM [Tag] a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id] // LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id]
// WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id]) // WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id])
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.msaccess.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.msaccess.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url] //SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url]
//FROM [Song] a //FROM [Song] a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM [Song_tag] Mt_Ms // FROM [Song_tag] Mt_Ms
// WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1 // WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id]) // WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id])
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -831,7 +831,7 @@ namespace FreeSql.Tests.MsAccess
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 sum(b.[Id]) Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 sum(b.[Id])
FROM [tb_topic22] b) as as6 FROM [tb_topic22] b) as as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -848,7 +848,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 min(b.[Id]) Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 min(b.[Id])
FROM [tb_topic22] b) as as6 FROM [tb_topic22] b) as as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -865,7 +865,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 max(b.[Id]) Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 max(b.[Id])
FROM [tb_topic22] b) as as6 FROM [tb_topic22] b) as as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -882,7 +882,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 avg(b.[Id]) Assert.Equal(@"SELECT a.[Id] as as1, a.[Clicks] as as2, a.[TypeGuid] as as3, a.[Title] as as4, a.[CreateTime] as as5, (SELECT TOP 1 avg(b.[Id])
FROM [tb_topic22] b) as as6 FROM [tb_topic22] b) as as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -897,7 +897,7 @@ FROM [tb_topic22] a", subquery);
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
FROM [tb_topic22] a FROM [tb_topic22] a
WHERE (((cstr(a.[Id])) in (SELECT b.[Title] WHERE (((cstr(a.[Id])) in (SELECT b.[Title]
FROM [tb_topic22] b)))", subquery); FROM [tb_topic22] b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -975,12 +975,12 @@ WHERE (((cstr(a.[Id])) in (SELECT b.[Title]
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -19,81 +19,81 @@ namespace FreeSql.Tests.MySql
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001' Assert.Equal(@"INSERT INTO `tbioudb02`(`id`, `name`) SELECT 1, '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb02` a FROM `tbioudb02` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -111,81 +111,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -221,27 +221,27 @@ UNION ALL
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001' Assert.Equal(@"INSERT INTO `tbioudb022`(`id`, `name`) SELECT 1, '100001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '100002' SELECT 2, '100002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '100003' SELECT 3, '100003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '100004' SELECT 4, '100004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb022` a FROM `tbioudb022` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1) limit 0,1)
; ;
@ -265,81 +265,81 @@ INSERT INTO `tbioudb022`(`name`) VALUES('00001'), ('00002'), ('00003'), ('00004'
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '011'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 2, '02', '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '01'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '02' SELECT 2, '02', '02'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '03' SELECT 3, '03', '03'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 3 AND a.`id2` = '03') WHERE (a.`id1` = 3 AND a.`id2` = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '04' SELECT 4, '04', '04'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 4 AND a.`id2` = '04') WHERE (a.`id1` = 4 AND a.`id2` = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001' Assert.Equal(@"INSERT INTO `tbioudb03`(`id1`, `id2`, `name`) SELECT 1, '01', '001'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 1 AND a.`id2` = '01') WHERE (a.`id1` = 1 AND a.`id2` = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '002' SELECT 2, '02', '002'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 2 AND a.`id2` = '02') WHERE (a.`id1` = 2 AND a.`id2` = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '003' SELECT 3, '03', '003'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 3 AND a.`id2` = '03') WHERE (a.`id1` = 3 AND a.`id2` = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '004' SELECT 4, '04', '004'
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb03` a FROM `tbioudb03` a
WHERE (a.`id1` = 4 AND a.`id2` = '04') WHERE (a.`id1` = 4 AND a.`id2` = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList(); var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count());
@ -361,81 +361,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '011', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 2, '02', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '01', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', 0, now(3) SELECT 2, '02', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', 0, now(3) SELECT 3, '03', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', 0, now(3) SELECT 4, '04', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3) Assert.Equal(@"INSERT INTO `tbioudb04`(`id`, `name`, `version`, `CreateTime`) SELECT 1, '001', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 1) WHERE (a.`id` = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002', 0, now(3) SELECT 2, '002', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 2) WHERE (a.`id` = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003', 0, now(3) SELECT 3, '003', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 3) WHERE (a.`id` = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004', 0, now(3) SELECT 4, '004', 0, now(3)
FROM dual WHERE NOT EXISTS(SELECT 1 FROM dual WHERE NOT EXISTS(SELECT 1
FROM `tbioudb04` a FROM `tbioudb04` a
WHERE (a.`id` = 4) WHERE (a.`id` = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());

View File

@ -104,22 +104,22 @@ namespace FreeSql.Tests.MySql
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.mysql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -213,9 +213,9 @@ namespace FreeSql.Tests.MySql
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
@ -976,8 +976,8 @@ namespace FreeSql.Tests.MySql
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT sum(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -994,8 +994,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT min(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -1012,8 +1012,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT max(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -1030,8 +1030,8 @@ FROM `tb_topic` a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`) Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a.`Title` as4, a.`CreateTime` as5, (SELECT avg(b.`Id`)
FROM `tb_topic` b FROM `tb_topic` b
limit 0,1) as6 limit 0,1) as6
FROM `tb_topic` a", subquery); FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -1046,7 +1046,7 @@ FROM `tb_topic` a", subquery);
Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` Assert.Equal(@"SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
FROM `tb_topic` a FROM `tb_topic` a
WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title` WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
FROM `tb_topic` b)))", subquery); FROM `tb_topic` b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1124,12 +1124,12 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT a.`Id`, a.`Clicks`, a.`TypeGuid`, a.`Title`, a.`CreateTime` FROM `tb_topic` a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM `tb_topic` a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
@ -1157,10 +1157,10 @@ WHERE (((cast(a.`Id` as char)) in (SELECT b.`Title`
Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2 Assert.Equal(@"SELECT a.`Id` as1, a.`Clicks` as2
FROM (SELECT * from (SELECT a.`Id` Id, a.`Clicks` Clicks FROM (SELECT * from (SELECT a.`Id` Id, a.`Clicks` Clicks
FROM `tb_topic_1` a) ftb FROM `tb_topic_1` a) ftb
UNION ALL UNION ALL
SELECT * from (SELECT a.`Id` Id, a.`Clicks` Clicks SELECT * from (SELECT a.`Id` Id, a.`Clicks` Clicks
FROM `tb_topic_2` a) ftb) a FROM `tb_topic_2` a) ftb) a
limit 0,20", select limit 0,20", select

View File

@ -96,22 +96,22 @@ namespace FreeSql.Tests.Oracle
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.oracle.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.oracle.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -856,8 +856,8 @@ namespace FreeSql.Tests.Oracle
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -874,8 +874,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -892,8 +892,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -910,8 +910,8 @@ FROM ""TB_TOPIC22"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC22"" b FROM ""TB_TOPIC22"" b
WHERE ROWNUM < 2) as6 WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" a", subquery); FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -926,7 +926,7 @@ FROM ""TB_TOPIC22"" a", subquery);
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME"" Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
FROM ""TB_TOPIC22"" a FROM ""TB_TOPIC22"" a
WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE"" WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
FROM ""TB_TOPIC22"" b)))", subquery); FROM ""TB_TOPIC22"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1005,12 +1005,12 @@ WHERE (((to_char(a.""ID"")) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC22\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC22\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -18,67 +18,67 @@ using FreeSql.DataAnnotations;
namespace ZX.Model { namespace ZX.Model {
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
public class CustomerCheckupGroup { public class CustomerCheckupGroup {
[JsonProperty, Column(IsPrimary = true)] [JsonProperty, Column(IsPrimary = true)]
public short ShopId { get => _ShopId; set { public short ShopId { get => _ShopId; set {
if (_ShopId == value) return; if (_ShopId == value) return;
_ShopId = value; _ShopId = value;
} } } }
private short _ShopId; private short _ShopId;
[JsonProperty, Column(DbType = "varchar(50)", IsPrimary = true)] [JsonProperty, Column(DbType = "varchar(50)", IsPrimary = true)]
public string Id { get; set; } public string Id { get; set; }
[JsonProperty, Column(DbType = "nvarchar(50)")] [JsonProperty, Column(DbType = "nvarchar(50)")]
public string MemberId { get => _MemberId; set { public string MemberId { get => _MemberId; set {
if (_MemberId == value) return; if (_MemberId == value) return;
_MemberId = value; _MemberId = value;
} } } }
private string _MemberId; private string _MemberId;
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Discount { get; set; } public string Discount { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Doctor { get; set; } public string Doctor { get; set; }
[JsonProperty] [JsonProperty]
public DateTime? FirstTime { get; set; } public DateTime? FirstTime { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Group { get; set; } public string Group { get; set; }
[JsonProperty] [JsonProperty]
public DateTime? InsertTime { get; set; } public DateTime? InsertTime { get; set; }
[JsonProperty, Column(Name = "isOK")] [JsonProperty, Column(Name = "isOK")]
public bool? IsOK { get; set; } public bool? IsOK { get; set; }
[JsonProperty, Column(Name = "isPay", DbType = "varchar(50)")] [JsonProperty, Column(Name = "isPay", DbType = "varchar(50)")]
public string IsPay { get; set; } public string IsPay { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Office { get; set; } public string Office { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string PayType { get; set; } public string PayType { get; set; }
[JsonProperty, Column(DbType = "decimal(9,2)")] [JsonProperty, Column(DbType = "decimal(9,2)")]
public decimal? Price { get; set; } public decimal? Price { get; set; }
[JsonProperty] [JsonProperty]
public DateTime? UpdateTime { get; set; } public DateTime? UpdateTime { get; set; }
[JsonProperty, Column(DbType = "decimal(9,2)")] [JsonProperty, Column(DbType = "decimal(9,2)")]
public decimal? Value { get; set; } public decimal? Value { get; set; }
#region => ManyToOne/OneToOne #region => ManyToOne/OneToOne
[Navigate("ShopId, MemberId")] [Navigate("ShopId, MemberId")]
public virtual CustomerMember CustomerMember { get; set; } public virtual CustomerMember CustomerMember { get; set; }
#endregion #endregion
#region => ManyToMany #region => ManyToMany

View File

@ -25,84 +25,84 @@ namespace ZX.Model {
CheckupGroups = new List<CustomerCheckupGroup>(); CheckupGroups = new List<CustomerCheckupGroup>();
} }
[JsonProperty, Column(DbType = "nvarchar(50)", IsPrimary = true)] [JsonProperty, Column(DbType = "nvarchar(50)", IsPrimary = true)]
public string MemberId { get; set; } public string MemberId { get; set; }
[JsonProperty, Column(IsPrimary = true)] [JsonProperty, Column(IsPrimary = true)]
public short ShopId { get; set; } public short ShopId { get; set; }
[JsonProperty] [JsonProperty]
public long? CustomerId { get => _CustomerId; set { public long? CustomerId { get => _CustomerId; set {
if (_CustomerId == value) return; if (_CustomerId == value) return;
_CustomerId = value; _CustomerId = value;
} } } }
private long? _CustomerId; private long? _CustomerId;
[JsonProperty, Column(DbType = "varchar(500)")] [JsonProperty, Column(DbType = "varchar(500)")]
public string Address { get; set; } public string Address { get; set; }
[JsonProperty, Column(DbType = "smalldatetime")] [JsonProperty, Column(DbType = "smalldatetime")]
public DateTime? Birthday { get; set; } public DateTime? Birthday { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string CardNo { get; set; } public string CardNo { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string CardType { get; set; } public string CardType { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Doctor { get; set; } public string Doctor { get; set; }
[JsonProperty] [JsonProperty]
public DateTime? EndDate { get; set; } public DateTime? EndDate { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Group { get; set; } public string Group { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Marry { get; set; } public string Marry { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Name { get; set; } public string Name { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Part { get; set; } public string Part { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string PayType { get; set; } public string PayType { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Phone { get; set; } public string Phone { get; set; }
[JsonProperty, Column(DbType = "varchar(10)")] [JsonProperty, Column(DbType = "varchar(10)")]
public string Sex { get; set; } public string Sex { get; set; }
[JsonProperty] [JsonProperty]
public DateTime? StartDate { get; set; } public DateTime? StartDate { get; set; }
[JsonProperty, Column(DbType = "text")] [JsonProperty, Column(DbType = "text")]
public string Suggest { get; set; } public string Suggest { get; set; }
[JsonProperty, Column(DbType = "text")] [JsonProperty, Column(DbType = "text")]
public string SumUp { get; set; } public string SumUp { get; set; }
[JsonProperty, Column(DbType = "varchar(50)")] [JsonProperty, Column(DbType = "varchar(50)")]
public string Team { get; set; } public string Team { get; set; }
[JsonProperty, Column(DbType = "decimal(9,2)")] [JsonProperty, Column(DbType = "decimal(9,2)")]
public decimal? TotalFee { get; set; } public decimal? TotalFee { get; set; }
#region => ManyToOne/OneToOne #region => ManyToOne/OneToOne
[Navigate("MemberId,ShopId")] [Navigate("MemberId,ShopId")]
public virtual List<CustomerCheckupGroup> CheckupGroups { get; set; } public virtual List<CustomerCheckupGroup> CheckupGroups { get; set; }
#endregion #endregion
#region => ManyToMany #region => ManyToMany
#endregion #endregion
} }
} }

View File

@ -86,22 +86,22 @@ namespace FreeSql.Tests.PostgreSQL
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.pgsql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.pgsql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -189,9 +189,9 @@ namespace FreeSql.Tests.PostgreSQL
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
@ -933,8 +933,8 @@ namespace FreeSql.Tests.PostgreSQL
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -951,8 +951,8 @@ FROM ""tb_topic"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -969,8 +969,8 @@ FROM ""tb_topic"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -987,8 +987,8 @@ FROM ""tb_topic"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"") Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"")
FROM ""tb_topic"" b FROM ""tb_topic"" b
limit 1) as6 limit 1) as6
FROM ""tb_topic"" a", subquery); FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -1003,7 +1003,7 @@ FROM ""tb_topic"" a", subquery);
Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime"" Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime""
FROM ""tb_topic"" a FROM ""tb_topic"" a
WHERE ((((a.""id"")::text) in (SELECT b.""title"" WHERE ((((a.""id"")::text) in (SELECT b.""title""
FROM ""tb_topic"" b)))", subquery); FROM ""tb_topic"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1081,12 +1081,12 @@ WHERE ((((a.""id"")::text) in (SELECT b.""title""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALLSELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALL SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -85,7 +85,7 @@ namespace FreeSql.Tests.PostgreSQLExpression
public void Array() public void Array()
{ {
//g.pgsql.Aop.CurdAfter = (s, e) => { //g.pgsql.Aop.CurdAfter = (s, e) => {
// Trace.WriteLine(e.CurdType + ": " + e.ElapsedMilliseconds + "ms " + e.Sql.Replace("\n", "")); // Trace.WriteLine(e.CurdType + ": " + e.ElapsedMilliseconds + "ms " + e.Sql.Replace("\n", ""));
//}; //};
IEnumerable<int> testlinqlist = new List<int>(new[] { 1, 2, 3 }); IEnumerable<int> testlinqlist = new List<int>(new[] { 1, 2, 3 });
var testlinq = select.Where(a => testlinqlist.Contains(a.testFieldInt)).ToList(); var testlinq = select.Where(a => testlinqlist.Contains(a.testFieldInt)).ToList();

View File

@ -86,22 +86,22 @@ namespace FreeSql.Tests.ShenTong
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.shentong.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.shentong.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
} }
[Fact] [Fact]
@ -189,9 +189,9 @@ namespace FreeSql.Tests.ShenTong
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
@ -933,8 +933,8 @@ namespace FreeSql.Tests.ShenTong
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT sum(b.""ID"")
FROM ""TB_TOPIC"" b FROM ""TB_TOPIC"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC"" a", subquery); FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -951,8 +951,8 @@ FROM ""TB_TOPIC"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT min(b.""ID"")
FROM ""TB_TOPIC"" b FROM ""TB_TOPIC"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC"" a", subquery); FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -969,8 +969,8 @@ FROM ""TB_TOPIC"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT max(b.""ID"")
FROM ""TB_TOPIC"" b FROM ""TB_TOPIC"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC"" a", subquery); FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -987,8 +987,8 @@ FROM ""TB_TOPIC"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"") Assert.Equal(@"SELECT a.""ID"" as1, a.""CLICKS"" as2, a.""TYPEGUID"" as3, a.""TITLE"" as4, a.""CREATETIME"" as5, (SELECT avg(b.""ID"")
FROM ""TB_TOPIC"" b FROM ""TB_TOPIC"" b
limit 1) as6 limit 1) as6
FROM ""TB_TOPIC"" a", subquery); FROM ""TB_TOPIC"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -1003,7 +1003,7 @@ FROM ""TB_TOPIC"" a", subquery);
Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME"" Assert.Equal(@"SELECT a.""ID"", a.""CLICKS"", a.""TYPEGUID"", a.""TITLE"", a.""CREATETIME""
FROM ""TB_TOPIC"" a FROM ""TB_TOPIC"" a
WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE"" WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
FROM ""TB_TOPIC"" b)))", subquery); FROM ""TB_TOPIC"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1081,12 +1081,12 @@ WHERE ((((a.""ID"")::text) in (SELECT b.""TITLE""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC\" a) ftb UNION ALLSELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC\" a) ftb UNION ALL SELECT * from (SELECT a.\"ID\", a.\"CLICKS\", a.\"TYPEGUID\", a.\"TITLE\", a.\"CREATETIME\" FROM \"TB_TOPIC\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"TB_TOPIC\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -76,7 +76,7 @@ namespace FreeSql.Tests.ShenTongExpression
public void Array() public void Array()
{ {
//g.shentong.Aop.CurdAfter = (s, e) => { //g.shentong.Aop.CurdAfter = (s, e) => {
// Trace.WriteLine(e.CurdType + ": " + e.ElapsedMilliseconds + "ms " + e.Sql.Replace("\n", "")); // Trace.WriteLine(e.CurdType + ": " + e.ElapsedMilliseconds + "ms " + e.Sql.Replace("\n", ""));
//}; //};
IEnumerable<int> testlinqlist = new List<int>(new[] { 1, 2, 3 }); IEnumerable<int> testlinqlist = new List<int>(new[] { 1, 2, 3 });
var testlinq = select.Where(a => testlinqlist.Contains(a.testFieldInt)).ToList(); var testlinq = select.Where(a => testlinqlist.Contains(a.testFieldInt)).ToList();

View File

@ -96,22 +96,22 @@ namespace FreeSql.Tests.SqlServer
//SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name] //SELECT a.[Id], a.[Parent_id], a.[Ddd], a.[Name]
//FROM [Tag] a //FROM [Tag] a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id] // LEFT JOIN [Tag] t__Parent ON t__Parent.[Id] = t.[Parent_id]
// WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id]) // WHERE (t__Parent.[Id] = 10) AND (t.[Parent_id] = a.[Id])
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.sqlserver.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.sqlserver.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url] //SELECT a.[Id], a.[Create_time], a.[Is_deleted], a.[Title], a.[Url]
//FROM [Song] a //FROM [Song] a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM [Song_tag] Mt_Ms // FROM [Song_tag] Mt_Ms
// WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1 // WHERE(Mt_Ms.[Song_id] = a.[Id]) AND(exists(SELECT 1
// FROM [Tag] t // FROM [Tag] t
// WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id]) // WHERE(t.[Name] = '国语') AND(t.[Id] = Mt_Ms.[Tag_id])
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
var t3 = g.sqlserver.Select<Song>().ToList(r => new var t3 = g.sqlserver.Select<Song>().ToList(r => new
{ {
@ -867,7 +867,7 @@ namespace FreeSql.Tests.SqlServer
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 sum(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -884,7 +884,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 min(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 min(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -901,7 +901,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 max(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 max(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -918,7 +918,7 @@ FROM [tb_topic22] a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id]) Assert.Equal(@"SELECT a.[Id] as1, a.[Clicks] as2, a.[TypeGuid] as3, a.[Title] as4, a.[CreateTime] as5, (SELECT TOP 1 avg(b.[Id])
FROM [tb_topic22] b) as6 FROM [tb_topic22] b) as6
FROM [tb_topic22] a", subquery); FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -933,7 +933,7 @@ FROM [tb_topic22] a", subquery);
Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] Assert.Equal(@"SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime]
FROM [tb_topic22] a FROM [tb_topic22] a
WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title] WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
FROM [tb_topic22] b)))", subquery); FROM [tb_topic22] b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1011,12 +1011,12 @@ WHERE (((cast(a.[Id] as nvarchar(100))) in (SELECT b.[Title]
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT a.[Id], a.[Clicks], a.[TypeGuid], a.[Title], a.[CreateTime] FROM [tb_topic22] a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM [tb_topic22] a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -53,20 +53,20 @@ namespace FreeSql.Tests.SqlServer
{ {
//var tt1 = g.sqlserver.Select<xxx>() //var tt1 = g.sqlserver.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var tt2result = g.sqlserver.Select<xxx>() //var tt2result = g.sqlserver.Select<xxx>()
// .LeftJoin(a => a.ParentId == a.Parent.Id) // .LeftJoin(a => a.ParentId == a.Parent.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
//var tt = g.sqlserver.Select<xxx>() //var tt = g.sqlserver.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToSql(a => new { a.Id, a.Title }); // .ToSql(a => new { a.Id, a.Title });
//var ttresult = g.sqlserver.Select<xxx>() //var ttresult = g.sqlserver.Select<xxx>()
// .LeftJoin<xxx>((a, b) => b.Id == a.Id) // .LeftJoin<xxx>((a, b) => b.Id == a.Id)
// .ToList(a => new { a.Id, a.Title }); // .ToList(a => new { a.Id, a.Title });
var tnsql1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id); var tnsql1 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(1, 3).ToSql(a => a.Id);
var tnsql2 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id); var tnsql2 = g.sqlserver.Select<xxx>().Where(a => a.Id > 0).Where(b => b.Title != null).Page(2, 3).ToSql(a => a.Id);

View File

@ -19,81 +19,81 @@ namespace FreeSql.Tests.Sqlite
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '01' Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '01'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '011' Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '011'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 2, '02' Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 2, '02'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "01" }, new tbioudb02 { id = 2, name = "02" }, new tbioudb02 { id = 3, name = "03" }, new tbioudb02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '01' Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '01'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new[] { new tbioudb02 { id = 1, name = "001" }, new tbioudb02 { id = 2, name = "002" }, new tbioudb02 { id = 3, name = "003" }, new tbioudb02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '001' Assert.Equal(@"INSERT INTO ""tbioudb02""(""id"", ""name"") SELECT 1, '001'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb02"" a FROM ""tbioudb02"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -111,81 +111,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '01' Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '01'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '011' Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '011'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 2, '02' Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 2, '02'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "01" }, new tbioudb022 { id = 2, name = "02" }, new tbioudb022 { id = 3, name = "03" }, new tbioudb022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '01' Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '01'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04' SELECT 4, '04'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "001" }, new tbioudb022 { id = 2, name = "002" }, new tbioudb022 { id = 3, name = "003" }, new tbioudb022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '001' Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '001'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004' SELECT 4, '004'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());
@ -221,27 +221,27 @@ UNION ALL
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '100001' Assert.Equal(@"INSERT INTO ""tbioudb022""(""id"", ""name"") SELECT 1, '100001'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '100002' SELECT 2, '100002'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '100003' SELECT 3, '100003'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '100004' SELECT 4, '100004'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb022"" a FROM ""tbioudb022"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1) limit 0,1)
; ;
@ -265,81 +265,81 @@ INSERT INTO ""tbioudb022""(""name"") VALUES('00001'), ('00002'), ('00003'), ('00
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '01'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 1 AND a.""id2"" = '01') WHERE (a.""id1"" = 1 AND a.""id2"" = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '011' Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '011'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 1 AND a.""id2"" = '01') WHERE (a.""id1"" = 1 AND a.""id2"" = '01')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 2, '02', '02' Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 2, '02', '02'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 2 AND a.""id2"" = '02') WHERE (a.""id1"" = 2 AND a.""id2"" = '02')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "01" }, new tbioudb03 { id1 = 2, id2 = "02", name = "02" }, new tbioudb03 { id1 = 3, id2 = "03", name = "03" }, new tbioudb03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '01' Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '01'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 1 AND a.""id2"" = '01') WHERE (a.""id1"" = 1 AND a.""id2"" = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '02' SELECT 2, '02', '02'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 2 AND a.""id2"" = '02') WHERE (a.""id1"" = 2 AND a.""id2"" = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '03' SELECT 3, '03', '03'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 3 AND a.""id2"" = '03') WHERE (a.""id1"" = 3 AND a.""id2"" = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '04' SELECT 4, '04', '04'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 4 AND a.""id2"" = '04') WHERE (a.""id1"" = 4 AND a.""id2"" = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new[] { new tbioudb03 { id1 = 1, id2 = "01", name = "001" }, new tbioudb03 { id1 = 2, id2 = "02", name = "002" }, new tbioudb03 { id1 = 3, id2 = "03", name = "003" }, new tbioudb03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '001' Assert.Equal(@"INSERT INTO ""tbioudb03""(""id1"", ""id2"", ""name"") SELECT 1, '01', '001'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 1 AND a.""id2"" = '01') WHERE (a.""id1"" = 1 AND a.""id2"" = '01')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', '002' SELECT 2, '02', '002'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 2 AND a.""id2"" = '02') WHERE (a.""id1"" = 2 AND a.""id2"" = '02')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', '003' SELECT 3, '03', '003'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 3 AND a.""id2"" = '03') WHERE (a.""id1"" = 3 AND a.""id2"" = '03')
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', '004' SELECT 4, '04', '004'
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb03"" a FROM ""tbioudb03"" a
WHERE (a.""id1"" = 4 AND a.""id2"" = '04') WHERE (a.""id1"" = 4 AND a.""id2"" = '04')
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList(); var lst = fsql.Select<tbioudb03>().Where(a => a.id1 == 1 && a.id2 == "01" || a.id1 == 2 && a.id2 == "02" || a.id1 == 3 && a.id2 == "03" || a.id1 == 4 && a.id2 == "04").ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id1).Count());
@ -361,81 +361,81 @@ UNION ALL
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '01', 0, datetime(current_timestamp,'localtime') Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '01', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '011', 0, datetime(current_timestamp,'localtime') Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '011', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 2, '02', 0, datetime(current_timestamp,'localtime') Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 2, '02', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "01" }, new tbioudb04 { id = 2, name = "02" }, new tbioudb04 { id = 3, name = "03" }, new tbioudb04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '01', 0, datetime(current_timestamp,'localtime') Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '01', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '02', 0, datetime(current_timestamp,'localtime') SELECT 2, '02', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '03', 0, datetime(current_timestamp,'localtime') SELECT 3, '03', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '04', 0, datetime(current_timestamp,'localtime') SELECT 4, '04', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new[] { new tbioudb04 { id = 1, name = "001" }, new tbioudb04 { id = 2, name = "002" }, new tbioudb04 { id = 3, name = "003" }, new tbioudb04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '001', 0, datetime(current_timestamp,'localtime') Assert.Equal(@"INSERT INTO ""tbioudb04""(""id"", ""name"", ""version"", ""CreateTime"") SELECT 1, '001', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 1) WHERE (a.""id"" = 1)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 2, '002', 0, datetime(current_timestamp,'localtime') SELECT 2, '002', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 2) WHERE (a.""id"" = 2)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 3, '003', 0, datetime(current_timestamp,'localtime') SELECT 3, '003', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 3) WHERE (a.""id"" = 3)
limit 0,1) limit 0,1)
UNION ALL UNION ALL
SELECT 4, '004', 0, datetime(current_timestamp,'localtime') SELECT 4, '004', 0, datetime(current_timestamp,'localtime')
WHERE NOT EXISTS(SELECT 1 WHERE NOT EXISTS(SELECT 1
FROM ""tbioudb04"" a FROM ""tbioudb04"" a
WHERE (a.""id"" = 4) WHERE (a.""id"" = 4)
limit 0,1)", sql); limit 0,1)", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudb04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "0" + a.id).Count());

View File

@ -91,22 +91,22 @@ namespace FreeSql.Tests.Sqlite
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` //SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
//FROM `Tag` a //FROM `Tag` a
//WHERE (exists(SELECT 1 //WHERE (exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id` // LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`) // WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
// limit 0,1)) // limit 0,1))
//ManyToMany //ManyToMany
var t2 = g.sqlite.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql(); var t2 = g.sqlite.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` //SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
//FROM `Song` a //FROM `Song` a
//WHERE(exists(SELECT 1 //WHERE(exists(SELECT 1
// FROM `Song_tag` Mt_Ms // FROM `Song_tag` Mt_Ms
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1 // WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
// FROM `Tag` t // FROM `Tag` t
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`) // WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
// limit 0, 1)) // limit 0, 1))
// limit 0, 1)) // limit 0, 1))
var t3 = g.sqlite.Select<Song>().ToList(r => new var t3 = g.sqlite.Select<Song>().ToList(r => new
{ {
@ -821,8 +821,8 @@ namespace FreeSql.Tests.Sqlite
count = (long)select.As("b").Sum(b => b.Id) count = (long)select.As("b").Sum(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT sum(b.""Id"") Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT sum(b.""Id"")
FROM ""tb_topic22"" b FROM ""tb_topic22"" b
limit 0,1) as6 limit 0,1) as6
FROM ""tb_topic22"" a", subquery); FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -839,8 +839,8 @@ FROM ""tb_topic22"" a", subquery);
count = select.As("b").Min(b => b.Id) count = select.As("b").Min(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT min(b.""Id"") Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT min(b.""Id"")
FROM ""tb_topic22"" b FROM ""tb_topic22"" b
limit 0,1) as6 limit 0,1) as6
FROM ""tb_topic22"" a", subquery); FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -857,8 +857,8 @@ FROM ""tb_topic22"" a", subquery);
count = select.As("b").Max(b => b.Id) count = select.As("b").Max(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT max(b.""Id"") Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT max(b.""Id"")
FROM ""tb_topic22"" b FROM ""tb_topic22"" b
limit 0,1) as6 limit 0,1) as6
FROM ""tb_topic22"" a", subquery); FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -875,8 +875,8 @@ FROM ""tb_topic22"" a", subquery);
count = select.As("b").Avg(b => b.Id) count = select.As("b").Avg(b => b.Id)
}); });
Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT avg(b.""Id"") Assert.Equal(@"SELECT a.""Id"" as1, a.""Clicks"" as2, a.""TypeGuid"" as3, a.""Title"" as4, a.""CreateTime"" as5, (SELECT avg(b.""Id"")
FROM ""tb_topic22"" b FROM ""tb_topic22"" b
limit 0,1) as6 limit 0,1) as6
FROM ""tb_topic22"" a", subquery); FROM ""tb_topic22"" a", subquery);
var subqueryList = select.ToList(a => new var subqueryList = select.ToList(a => new
{ {
@ -891,7 +891,7 @@ FROM ""tb_topic22"" a", subquery);
Assert.Equal(@"SELECT a.""Id"", a.""Clicks"", a.""TypeGuid"", a.""Title"", a.""CreateTime"" Assert.Equal(@"SELECT a.""Id"", a.""Clicks"", a.""TypeGuid"", a.""Title"", a.""CreateTime""
FROM ""tb_topic22"" a FROM ""tb_topic22"" a
WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title"" WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title""
FROM ""tb_topic22"" b)))", subquery); FROM ""tb_topic22"" b)))", subquery);
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList(); var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
} }
[Fact] [Fact]
@ -1001,12 +1001,12 @@ WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title""
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql().Replace("\r\n", ""); sql = query.ToSql().Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22\" a) ftb UNION ALLSELECT * from (SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22\" a) ftb UNION ALL SELECT * from (SELECT a.\"Id\", a.\"Clicks\", a.\"TypeGuid\", a.\"Title\", a.\"CreateTime\" FROM \"tb_topic22\" a) ftb", sql);
query.ToList(); query.ToList();
query = select.AsTable((_, old) => old).AsTable((_, old) => old); query = select.AsTable((_, old) => old).AsTable((_, old) => old);
sql = query.ToSql("count(1) as1").Replace("\r\n", ""); sql = query.ToSql("count(1) as1").Replace("\r\n", "");
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic22\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"tb_topic22\" a) ftb", sql); Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic22\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"tb_topic22\" a) ftb", sql);
query.Count(); query.Count();
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id); select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);

View File

@ -183,73 +183,73 @@ namespace FreeSql.Tests
{ {
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "article_id", IsIdentity = true, IsPrimary = true)] [Column(Name = "article_id", IsIdentity = true, IsPrimary = true)]
public int ArticleId { get; set; } public int ArticleId { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "article_title")] [Column(Name = "article_title")]
public string ArticleTitle { get; set; } public string ArticleTitle { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "category_id")] [Column(Name = "category_id")]
public int CategoryId { get; set; } public int CategoryId { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "channel_id")] [Column(Name = "channel_id")]
public int ChannelId { get; set; } public int ChannelId { get; set; }
/// <summary> /// <summary>
/// 类型 /// 类型
/// </summary> /// </summary>
[Column(Name = "type_id")] [Column(Name = "type_id")]
public int TypeId { get; set; } public int TypeId { get; set; }
/// <summary> /// <summary>
/// 内容简介 /// 内容简介
/// </summary> /// </summary>
[Column(Name = "summary")] [Column(Name = "summary")]
public string Summary { get; set; } public string Summary { get; set; }
/// <summary> /// <summary>
/// 缩略图 /// 缩略图
/// </summary> /// </summary>
[Column(Name = "thumbnail")] [Column(Name = "thumbnail")]
public string Thumbnail { get; set; } public string Thumbnail { get; set; }
/// <summary> /// <summary>
/// 点击量 /// 点击量
/// </summary> /// </summary>
[Column(Name = "hits")] [Column(Name = "hits")]
public int Hits { get; set; } public int Hits { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "is_display")] [Column(Name = "is_display")]
public int IsDisplay { get; set; } public int IsDisplay { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "status")] [Column(Name = "status")]
public int Status { get; set; } public int Status { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "create_time")] [Column(Name = "create_time")]
public int CreateTime { get; set; } public int CreateTime { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Column(Name = "release_time")] [Column(Name = "release_time")]
public int ReleaseTime { get; set; } public int ReleaseTime { get; set; }
@ -762,14 +762,14 @@ namespace FreeSql.Tests
//var testaddlist = new List<NewsArticle>(); //var testaddlist = new List<NewsArticle>();
//for(var a = 0; a < 133905; a++) { //for(var a = 0; a < 133905; a++) {
// testaddlist.Add(new NewsArticle { // testaddlist.Add(new NewsArticle {
// ArticleTitle = "testaddlist_topic" + a, // ArticleTitle = "testaddlist_topic" + a,
// Hits = a, // Hits = a,
// }); // });
//} //}
//g.sqlite.Insert<NewsArticle>(testaddlist) //g.sqlite.Insert<NewsArticle>(testaddlist)
// //.NoneParameter() // //.NoneParameter()
// .ExecuteAffrows(); // .ExecuteAffrows();
g.mysql.Aop.ParseExpression += (s, e) => g.mysql.Aop.ParseExpression += (s, e) =>
@ -1225,9 +1225,9 @@ namespace FreeSql.Tests
//); //);
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom() //var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
// .InnerJoin(a.TypeGuid == b.Guid) // .InnerJoin(a.TypeGuid == b.Guid)
// .LeftJoin(c.Id == b.ParentId) // .LeftJoin(c.Id == b.ParentId)
// .Where(b.Name == "xxx")) // .Where(b.Name == "xxx"))
//.Where(a => a.Id == 1).ToSql(); //.Where(a => a.Id == 1).ToSql();
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s

View File

@ -984,7 +984,7 @@ namespace FreeSql.Internal
fsqlWhere.Invoke(fsql, new object[] { Expression.Lambda(fsqlManyWhereExp, fsqlWhereParam) }); fsqlWhere.Invoke(fsql, new object[] { Expression.Lambda(fsqlManyWhereExp, fsqlWhereParam) });
var sql2 = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { "1" })?.ToString(); var sql2 = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { "1" })?.ToString();
if (string.IsNullOrEmpty(sql2) == false) if (string.IsNullOrEmpty(sql2) == false)
manySubSelectExpBoy = Expression.Call(manySubSelectExpBoy, manySubSelectWhereSql, Expression.Constant($"exists({sql2.Replace("\r\n", "\r\n\t")})"), Expression.Constant(null)); manySubSelectExpBoy = Expression.Call(manySubSelectExpBoy, manySubSelectWhereSql, Expression.Constant($"exists({sql2.Replace(" \r\n", " \r\n ")})"), Expression.Constant(null));
MethodInfo manySubSelectAggMethod = null; MethodInfo manySubSelectAggMethod = null;
switch (exp3.Method.Name) //https://github.com/dotnetcore/FreeSql/issues/362 switch (exp3.Method.Name) //https://github.com/dotnetcore/FreeSql/issues/362
{ {
@ -1031,12 +1031,12 @@ namespace FreeSql.Internal
case "Any": case "Any":
var sql = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { "1" })?.ToString(); var sql = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { "1" })?.ToString();
if (string.IsNullOrEmpty(sql) == false) if (string.IsNullOrEmpty(sql) == false)
return $"exists({sql.Replace("\r\n", "\r\n\t")})"; return $"exists({sql.Replace(" \r\n", " \r\n ")})";
break; break;
case "Count": case "Count":
var sqlCount = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { "count(1)" })?.ToString(); var sqlCount = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { "count(1)" })?.ToString();
if (string.IsNullOrEmpty(sqlCount) == false) if (string.IsNullOrEmpty(sqlCount) == false)
return $"({sqlCount.Replace("\r\n", "\r\n\t")})"; return $"({sqlCount.Replace(" \r\n", " \r\n ")})";
break; break;
case "Sum": case "Sum":
case "Min": case "Min":
@ -1047,7 +1047,7 @@ namespace FreeSql.Internal
tscClone1._tables = fsqltables; tscClone1._tables = fsqltables;
var sqlSum = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { $"{exp3.Method.Name.ToLower()}({ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tscClone1)})" })?.ToString(); var sqlSum = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { $"{exp3.Method.Name.ToLower()}({ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tscClone1)})" })?.ToString();
if (string.IsNullOrEmpty(sqlSum) == false) if (string.IsNullOrEmpty(sqlSum) == false)
return $"({sqlSum.Replace("\r\n", "\r\n\t")})"; return $"({sqlSum.Replace(" \r\n", " \r\n ")})";
break; break;
case "ToList": case "ToList":
case "ToOne": case "ToOne":
@ -1057,7 +1057,7 @@ namespace FreeSql.Internal
tscClone2._tables = fsqltables; tscClone2._tables = fsqltables;
var sqlFirst = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tscClone2) })?.ToString(); var sqlFirst = fsqlType.GetMethod("ToSql", new Type[] { typeof(string) })?.Invoke(fsql, new object[] { ExpressionLambdaToSql(exp3.Arguments.FirstOrDefault(), tscClone2) })?.ToString();
if (string.IsNullOrEmpty(sqlFirst) == false) if (string.IsNullOrEmpty(sqlFirst) == false)
return $"({sqlFirst.Replace("\r\n", "\r\n\t")})"; return $"({sqlFirst.Replace(" \r\n", " \r\n ")})";
break; break;
} }
} }

View File

@ -990,7 +990,7 @@ namespace FreeSql.Internal.CommonProvider
if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(tb.Table.Type, name); if (_orm.CodeFirst.IsAutoSyncStructure) _orm.CodeFirst.SyncStructure(tb.Table.Type, name);
} }
else else
name = name.Replace("\r\n", "\r\n "); name = name.Replace(" \r\n", " \r\n ");
} }
dict.Add(tb.Table.Type, name); dict.Add(tb.Table.Type, name);
} }

View File

@ -25,7 +25,7 @@ namespace FreeSql.Dameng.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -26,7 +26,7 @@ namespace FreeSql.MsAccess.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -54,7 +54,7 @@ namespace FreeSql.MySql.Curd
.AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type)
.DisableGlobalFilter() .DisableGlobalFilter()
.WhereDynamic(rowd) .WhereDynamic(rowd)
.Limit(1).ToSql("1").Replace("\r\n", "\r\n\t")).Append(")")); .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"));
} }
} }
if (string.IsNullOrEmpty(sql)) return null; if (string.IsNullOrEmpty(sql)) return null;

View File

@ -25,7 +25,7 @@ namespace FreeSql.MySql.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.Odbc.Dameng
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.Odbc.Default
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.Odbc.KingbaseES
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -53,7 +53,7 @@ namespace FreeSql.Odbc.MySql
.AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type)
.DisableGlobalFilter() .DisableGlobalFilter()
.WhereDynamic(rowd) .WhereDynamic(rowd)
.Limit(1).ToSql("1").Replace("\r\n", "\r\n\t")).Append(")")); .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"));
} }
} }
if (string.IsNullOrEmpty(sql)) return null; if (string.IsNullOrEmpty(sql)) return null;

View File

@ -25,7 +25,7 @@ namespace FreeSql.Odbc.MySql
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.Odbc.Oracle
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.Odbc.PostgreSQL
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -31,7 +31,7 @@ namespace FreeSql.Odbc.SqlServer
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];
@ -146,7 +146,7 @@ namespace FreeSql.Odbc.SqlServer
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.Oracle.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.PostgreSQL.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -25,7 +25,7 @@ namespace FreeSql.ShenTong.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -146,7 +146,7 @@ namespace FreeSql.SqlServer.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];

View File

@ -57,7 +57,7 @@ namespace FreeSql.Sqlite.Curd
.AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type) .AsTable((_, __) => _tableRule?.Invoke(__)).AsType(_table.Type)
.DisableGlobalFilter() .DisableGlobalFilter()
.WhereDynamic(rowd) .WhereDynamic(rowd)
.Limit(1).ToSql("1").Replace("\r\n", "\r\n\t")).Append(")")); .Limit(1).ToSql("1").Replace(" \r\n", " \r\n ")).Append(")"));
} }
} }
if (string.IsNullOrEmpty(sql)) return null; if (string.IsNullOrEmpty(sql)) return null;

View File

@ -25,7 +25,7 @@ namespace FreeSql.Sqlite.Curd
var tbUnionsGt0 = tbUnions.Count > 1; var tbUnionsGt0 = tbUnions.Count > 1;
for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++) for (var tbUnionsIdx = 0; tbUnionsIdx < tbUnions.Count; tbUnionsIdx++)
{ {
if (tbUnionsIdx > 0) sb.Append(" \r\n\r\nUNION ALL\r\n\r\n"); if (tbUnionsIdx > 0) sb.Append("\r\n \r\nUNION ALL\r\n \r\n");
if (tbUnionsGt0) sb.Append(_select).Append(" * from ("); if (tbUnionsGt0) sb.Append(_select).Append(" * from (");
var tbUnion = tbUnions[tbUnionsIdx]; var tbUnion = tbUnions[tbUnionsIdx];