- 修改 MERGE INTO 别名与 SQL 关键字冲突的 bug;#816

This commit is contained in:
2881099 2021-07-16 00:47:29 +08:00
parent d00273ca77
commit 5213bd0224
26 changed files with 1165 additions and 1174 deletions

View File

@ -512,14 +512,5 @@
<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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Dameng
var iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
} }
class tbioudn01 class tbioudn01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "01" }, new tbioudn02 { id = 2, name = "02" }, new tbioudn02 { id = 3, name = "03" }, new tbioudn02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "01" }, new tbioudn02 { id = 2, name = "02" }, new tbioudn02 { id = 3, name = "03" }, new tbioudn02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "001" }, new tbioudn02 { id = 2, name = "002" }, new tbioudn02 { id = 3, name = "003" }, new tbioudn02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "001" }, new tbioudn02 { id = 2, name = "002" }, new tbioudn02 { id = 3, name = "003" }, new tbioudn02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudn02>().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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "01" }, new tbioudn022 { id = 2, name = "02" }, new tbioudn022 { id = 3, name = "03" }, new tbioudn022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "01" }, new tbioudn022 { id = 2, name = "02" }, new tbioudn022 { id = 3, name = "03" }, new tbioudn022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "001" }, new tbioudn022 { id = 2, name = "002" }, new tbioudn022 { id = 3, name = "003" }, new tbioudn022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "001" }, new tbioudn022 { id = 2, name = "002" }, new tbioudn022 { id = 3, name = "003" }, new tbioudn022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudn022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -247,16 +247,16 @@ INTO ""TBIOUDN022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "100001" }, new tbioudn022 { name = "00001" }, new tbioudn022 { id = 2, name = "100002" }, new tbioudn022 { name = "00002" }, new tbioudn022 { id = 3, name = "100003" }, new tbioudn022 { name = "00003" }, new tbioudn022 { id = 4, name = "100004" }, new tbioudn022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "100001" }, new tbioudn022 { name = "00001" }, new tbioudn022 { id = 2, name = "100002" }, new tbioudn022 { name = "00002" }, new tbioudn022 { id = 3, name = "100003" }, new tbioudn022 { name = "00003" }, new tbioudn022 { id = 4, name = "100004" }, new tbioudn022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -284,58 +284,58 @@ INTO ""TBIOUDN022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "02", name = "011" }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "02", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '02' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '02' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "01" }, new tbioudn03 { id1 = 2, id2 = "02", name = "02" }, new tbioudn03 { id1 = 3, id2 = "03", name = "03" }, new tbioudn03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "01" }, new tbioudn03 { id1 = 2, id2 = "02", name = "02" }, new tbioudn03 { id1 = 3, id2 = "03", name = "03" }, new tbioudn03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "001" }, new tbioudn03 { id1 = 2, id2 = "02", name = "002" }, new tbioudn03 { id1 = 3, id2 = "03", name = "003" }, new tbioudn03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "001" }, new tbioudn03 { id1 = 2, id2 = "02", name = "002" }, new tbioudn03 { id1 = 3, id2 = "03", name = "003" }, new tbioudn03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn03>().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<tbioudn03>().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());
@ -356,58 +356,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "01" }, new tbioudn04 { id = 2, name = "02" }, new tbioudn04 { id = 3, name = "03" }, new tbioudn04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "01" }, new tbioudn04 { id = 2, name = "02" }, new tbioudn04 { id = 3, name = "03" }, new tbioudn04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "001" }, new tbioudn04 { id = 2, name = "002" }, new tbioudn04 { id = 3, name = "003" }, new tbioudn04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "001" }, new tbioudn04 { id = 2, name = "002" }, new tbioudn04 { id = 3, name = "003" }, new tbioudn04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudn04>().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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Dameng
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -267,18 +267,18 @@ INTO ""TBIOU022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -306,68 +306,68 @@ INTO ""TBIOU022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -388,68 +388,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Oracle
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
} }
class tbioudb01 class tbioudb01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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 == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -247,16 +247,16 @@ INTO ""TBIOUDB022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "100001" }, new tbioudb022 { name = "00001" }, new tbioudb022 { id = 2, name = "100002" }, new tbioudb022 { name = "00002" }, new tbioudb022 { id = 3, name = "100003" }, new tbioudb022 { name = "00003" }, new tbioudb022 { id = 4, name = "100004" }, new tbioudb022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "100001" }, new tbioudb022 { name = "00001" }, new tbioudb022 { id = 2, name = "100002" }, new tbioudb022 { name = "00002" }, new tbioudb022 { id = 3, name = "100003" }, new tbioudb022 { name = "00003" }, new tbioudb022 { id = 4, name = "100004" }, new tbioudb022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -284,58 +284,58 @@ INTO ""TBIOUDB022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); 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());
@ -356,58 +356,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); 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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Oracle
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -267,18 +267,18 @@ INTO ""TBIOU022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -306,68 +306,68 @@ INTO ""TBIOU022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -388,68 +388,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.SqlServer
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 2 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbioudb01 class tbioudb01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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());
@ -152,10 +152,10 @@ WHEN NOT MATCHED THEN
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -163,10 +163,10 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
@ -174,10 +174,10 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -185,16 +185,16 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
@ -202,16 +202,16 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", 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();
@ -248,16 +248,16 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'100001' as name USING (SELECT 1 as [id], N'100001' as [name]
UNION ALL UNION ALL
SELECT 2, N'100002' SELECT 2, N'100002'
UNION ALL UNION ALL
SELECT 3, N'100003' SELECT 3, N'100003'
UNION ALL UNION ALL
SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF; SET IDENTITY_INSERT [tbioudb022] OFF;
; ;
@ -281,58 +281,58 @@ INSERT INTO [tbioudb022]([name]) VALUES(N'00001'), (N'00002'), (N'00003'), (N'00
var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'011' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'011' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 2 as id1, N'02' as id2, N'02' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 2 as [id1], N'02' as [id2], N'02' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'02' SELECT 2, N'02', N'02'
UNION ALL UNION ALL
SELECT 3, N'03', N'03' SELECT 3, N'03', N'03'
UNION ALL UNION ALL
SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'001' as name USING (SELECT 1 as [id1], N'01' as [id2], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'002' SELECT 2, N'02', N'002'
UNION ALL UNION ALL
SELECT 3, N'03', N'003' SELECT 3, N'03', N'003'
UNION ALL UNION ALL
SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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());
@ -353,58 +353,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'011' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 2 as id, N'02' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'02', 0, getdate() SELECT 2, N'02', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'03', 0, getdate() SELECT 3, N'03', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'001' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'001' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'002', 0, getdate() SELECT 2, N'002', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'003', 0, getdate() SELECT 3, N'003', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.SqlServer
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 2 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -162,12 +162,12 @@ WHEN NOT MATCHED THEN
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -175,12 +175,12 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -188,12 +188,12 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -201,18 +201,18 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
@ -220,18 +220,18 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
@ -268,18 +268,18 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'100001' as name USING (SELECT 1 as [id], N'100001' as [name]
UNION ALL UNION ALL
SELECT 2, N'100002' SELECT 2, N'100002'
UNION ALL UNION ALL
SELECT 3, N'100003' SELECT 3, N'100003'
UNION ALL UNION ALL
SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF; SET IDENTITY_INSERT [tbiou022] OFF;
; ;
@ -303,68 +303,68 @@ INSERT INTO [tbiou022]([name]) VALUES(N'00001'), (N'00002'), (N'00003'), (N'0000
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'011' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'011' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 2 as id1, N'02' as id2, N'02' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 2 as [id1], N'02' as [id2], N'02' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'02' SELECT 2, N'02', N'02'
UNION ALL UNION ALL
SELECT 3, N'03', N'03' SELECT 3, N'03', N'03'
UNION ALL UNION ALL
SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'001' as name USING (SELECT 1 as [id1], N'01' as [id2], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'002' SELECT 2, N'02', N'002'
UNION ALL UNION ALL
SELECT 3, N'03', N'003' SELECT 3, N'03', N'003'
UNION ALL UNION ALL
SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -385,68 +385,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'011' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 2 as id, N'02' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'02', 0, getdate() SELECT 2, N'02', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'03', 0, getdate() SELECT 3, N'03', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'001' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'001' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'002', 0, getdate() SELECT 2, N'002', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'003', 0, getdate() SELECT 3, N'003', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Dameng
var iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new[] { new tbioudn01 { id = 1 }, new tbioudn01 { id = 2 }, new tbioudn01 { id = 3 }, new tbioudn01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
} }
class tbioudn01 class tbioudn01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "01" }, new tbioudn02 { id = 2, name = "02" }, new tbioudn02 { id = 3, name = "03" }, new tbioudn02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "01" }, new tbioudn02 { id = 2, name = "02" }, new tbioudn02 { id = 3, name = "03" }, new tbioudn02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "001" }, new tbioudn02 { id = 2, name = "002" }, new tbioudn02 { id = 3, name = "003" }, new tbioudn02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new[] { new tbioudn02 { id = 1, name = "001" }, new tbioudn02 { id = 2, name = "002" }, new tbioudn02 { id = 3, name = "003" }, new tbioudn02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudn02>().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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "01" }, new tbioudn022 { id = 2, name = "02" }, new tbioudn022 { id = 3, name = "03" }, new tbioudn022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "01" }, new tbioudn022 { id = 2, name = "02" }, new tbioudn022 { id = 3, name = "03" }, new tbioudn022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "001" }, new tbioudn022 { id = 2, name = "002" }, new tbioudn022 { id = 3, name = "003" }, new tbioudn022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "001" }, new tbioudn022 { id = 2, name = "002" }, new tbioudn022 { id = 3, name = "003" }, new tbioudn022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudn022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -247,16 +247,16 @@ INTO ""TBIOUDN022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "100001" }, new tbioudn022 { name = "00001" }, new tbioudn022 { id = 2, name = "100002" }, new tbioudn022 { name = "00002" }, new tbioudn022 { id = 3, name = "100003" }, new tbioudn022 { name = "00003" }, new tbioudn022 { id = 4, name = "100004" }, new tbioudn022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new[] { new tbioudn022 { id = 1, name = "100001" }, new tbioudn022 { name = "00001" }, new tbioudn022 { id = 2, name = "100002" }, new tbioudn022 { name = "00002" }, new tbioudn022 { id = 3, name = "100003" }, new tbioudn022 { name = "00003" }, new tbioudn022 { id = 4, name = "100004" }, new tbioudn022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -284,58 +284,58 @@ INTO ""TBIOUDN022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "02", name = "011" }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "02", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '02' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '02' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "01" }, new tbioudn03 { id1 = 2, id2 = "02", name = "02" }, new tbioudn03 { id1 = 3, id2 = "03", name = "03" }, new tbioudn03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "01" }, new tbioudn03 { id1 = 2, id2 = "02", name = "02" }, new tbioudn03 { id1 = 3, id2 = "03", name = "03" }, new tbioudn03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "001" }, new tbioudn03 { id1 = 2, id2 = "02", name = "002" }, new tbioudn03 { id1 = 3, id2 = "03", name = "003" }, new tbioudn03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new[] { new tbioudn03 { id1 = 1, id2 = "01", name = "001" }, new tbioudn03 { id1 = 2, id2 = "02", name = "002" }, new tbioudn03 { id1 = 3, id2 = "03", name = "003" }, new tbioudn03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn03>().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<tbioudn03>().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());
@ -356,58 +356,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "01" }, new tbioudn04 { id = 2, name = "02" }, new tbioudn04 { id = 3, name = "03" }, new tbioudn04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "01" }, new tbioudn04 { id = 2, name = "02" }, new tbioudn04 { id = 3, name = "03" }, new tbioudn04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "001" }, new tbioudn04 { id = 2, name = "002" }, new tbioudn04 { id = 3, name = "003" }, new tbioudn04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new[] { new tbioudn04 { id = 1, name = "001" }, new tbioudn04 { id = 2, name = "002" }, new tbioudn04 { id = 3, name = "003" }, new tbioudn04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDN04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbioudn04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbioudn04>().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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Dameng
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -267,18 +267,18 @@ INTO ""TBIOU022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -306,68 +306,68 @@ INTO ""TBIOU022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -388,68 +388,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
iou.ExecuteAffrows(); iou.ExecuteAffrows();
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Firebird
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT FIRST 1 2 as ID FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2 FROM rdb$database SELECT FIRST 1 2 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3 FROM rdb$database SELECT FIRST 1 3 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2 FROM rdb$database SELECT FIRST 1 2 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3 FROM rdb$database SELECT FIRST 1 3 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbioudb01 class tbioudb01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT FIRST 1 1 as ID, '011' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '011' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT FIRST 1 2 as ID, '02' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"", '02' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02' FROM rdb$database SELECT FIRST 1 2, '02' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03' FROM rdb$database SELECT FIRST 1 3, '03' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT FIRST 1 1 as ID, '001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '002' FROM rdb$database SELECT FIRST 1 2, '002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '003' FROM rdb$database SELECT FIRST 1 3, '003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT FIRST 1 1 as ID, '011' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '011' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT FIRST 1 2 as ID, '02' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"", '02' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02' FROM rdb$database SELECT FIRST 1 2, '02' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03' FROM rdb$database SELECT FIRST 1 3, '03' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT FIRST 1 1 as ID, '001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '002' FROM rdb$database SELECT FIRST 1 2, '002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '003' FROM rdb$database SELECT FIRST 1 3, '003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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 == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -249,16 +249,16 @@ UNION ALL
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "100001" }, new tbioudb022 { name = "00001" }, new tbioudb022 { id = 2, name = "100002" }, new tbioudb022 { name = "00002" }, new tbioudb022 { id = 3, name = "100003" }, new tbioudb022 { name = "00003" }, new tbioudb022 { id = 4, name = "100004" }, new tbioudb022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "100001" }, new tbioudb022 { name = "00001" }, new tbioudb022 { id = 2, name = "100002" }, new tbioudb022 { name = "00002" }, new tbioudb022 { id = 3, name = "100003" }, new tbioudb022 { name = "00003" }, new tbioudb022 { id = 4, name = "100004" }, new tbioudb022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT FIRST 1 1 as ID, '100001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '100001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '100002' FROM rdb$database SELECT FIRST 1 2, '100002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '100003' FROM rdb$database SELECT FIRST 1 3, '100003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '100004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '100004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -287,58 +287,58 @@ UNION ALL
var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '01' as NAME FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '011' as NAME FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT FIRST 1 2 as ID1, '02' as ID2, '02' as NAME FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT FIRST 1 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '01' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02', '02' FROM rdb$database SELECT FIRST 1 2, '02', '02' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03', '03' FROM rdb$database SELECT FIRST 1 3, '03', '03' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04', '04' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT FIRST 1 4, '04', '04' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02', '002' FROM rdb$database SELECT FIRST 1 2, '02', '002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03', '003' FROM rdb$database SELECT FIRST 1 3, '03', '003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04', '004' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT FIRST 1 4, '04', '004' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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());
@ -359,58 +359,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT FIRST 1 1 as ID, '011' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT FIRST 1 2 as ID, '02' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02', 0, current_timestamp FROM rdb$database SELECT FIRST 1 2, '02', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03', 0, current_timestamp FROM rdb$database SELECT FIRST 1 3, '03', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '04', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT FIRST 1 1 as ID, '001' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '002', 0, current_timestamp FROM rdb$database SELECT FIRST 1 2, '002', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '003', 0, current_timestamp FROM rdb$database SELECT FIRST 1 3, '003', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '004', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '004', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Firebird
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT FIRST 1 2 as ID FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2 FROM rdb$database SELECT FIRST 1 2 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3 FROM rdb$database SELECT FIRST 1 3 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT FIRST 1 1 as ID FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2 FROM rdb$database SELECT FIRST 1 2 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3 FROM rdb$database SELECT FIRST 1 3 FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4 FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT FIRST 1 1 as ID, '011' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '011' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT FIRST 1 2 as ID, '02' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"", '02' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02' FROM rdb$database SELECT FIRST 1 2, '02' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03' FROM rdb$database SELECT FIRST 1 3, '03' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT FIRST 1 1 as ID, '001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '002' FROM rdb$database SELECT FIRST 1 2, '002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '003' FROM rdb$database SELECT FIRST 1 3, '003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT FIRST 1 1 as ID, '011' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '011' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT FIRST 1 2 as ID, '02' as NAME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"", '02' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02' FROM rdb$database SELECT FIRST 1 2, '02' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03' FROM rdb$database SELECT FIRST 1 3, '03' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '04' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT FIRST 1 1 as ID, '001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '002' FROM rdb$database SELECT FIRST 1 2, '002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '003' FROM rdb$database SELECT FIRST 1 3, '003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -269,18 +269,18 @@ UNION ALL
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT FIRST 1 1 as ID, '100001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '100001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '100002' FROM rdb$database SELECT FIRST 1 2, '100002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '100003' FROM rdb$database SELECT FIRST 1 3, '100003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '100004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '100004' FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -309,68 +309,68 @@ UNION ALL
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '01' as NAME FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '011' as NAME FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT FIRST 1 2 as ID1, '02' as ID2, '02' as NAME FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT FIRST 1 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '01' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02', '02' FROM rdb$database SELECT FIRST 1 2, '02', '02' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03', '03' FROM rdb$database SELECT FIRST 1 3, '03', '03' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04', '04' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT FIRST 1 4, '04', '04' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT FIRST 1 1 as ID1, '01' as ID2, '001' as NAME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02', '002' FROM rdb$database SELECT FIRST 1 2, '02', '002' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03', '003' FROM rdb$database SELECT FIRST 1 3, '03', '003' FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04', '004' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT FIRST 1 4, '04', '004' FROM rdb$database ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -391,68 +391,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT FIRST 1 1 as ID, '011' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT FIRST 1 2 as ID, '02' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT FIRST 1 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT FIRST 1 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '02', 0, current_timestamp FROM rdb$database SELECT FIRST 1 2, '02', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '03', 0, current_timestamp FROM rdb$database SELECT FIRST 1 3, '03', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '04', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '04', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT FIRST 1 1 as ID, '001' as NAME, 0 as VERSION, current_timestamp as CREATETIME FROM rdb$database USING (SELECT FIRST 1 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 2, '002', 0, current_timestamp FROM rdb$database SELECT FIRST 1 2, '002', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 3, '003', 0, current_timestamp FROM rdb$database SELECT FIRST 1 3, '003', 0, current_timestamp FROM rdb$database
UNION ALL UNION ALL
SELECT FIRST 1 4, '004', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.ID) SELECT FIRST 1 4, '004', 0, current_timestamp FROM rdb$database ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Oracle
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbioudb01 class tbioudb01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, 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(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, 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 == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -247,16 +247,16 @@ INTO ""TBIOUDB022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "100001" }, new tbioudb022 { name = "00001" }, new tbioudb022 { id = 2, name = "100002" }, new tbioudb022 { name = "00002" }, new tbioudb022 { id = 3, name = "100003" }, new tbioudb022 { name = "00003" }, new tbioudb022 { id = 4, name = "100004" }, new tbioudb022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new[] { new tbioudb022 { id = 1, name = "100001" }, new tbioudb022 { name = "00001" }, new tbioudb022 { id = 2, name = "100002" }, new tbioudb022 { name = "00002" }, new tbioudb022 { id = 3, name = "100003" }, new tbioudb022 { name = "00003" }, new tbioudb022 { id = 4, name = "100004" }, new tbioudb022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -284,58 +284,58 @@ INTO ""TBIOUDB022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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());
@ -356,58 +356,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Oracle
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 2 as ID FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual USING (SELECT 1 as ""ID"" FROM dual
UNION ALL UNION ALL
SELECT 2 FROM dual SELECT 2 FROM dual
UNION ALL UNION ALL
SELECT 3 FROM dual SELECT 3 FROM dual
UNION ALL UNION ALL
SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '011' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 2 as ID, '02' as NAME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "01" }, new tbiou022 { id = 2, name = "02" }, new tbiou022 { id = 3, name = "03" }, new tbiou022 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '01' as NAME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02' FROM dual SELECT 2, '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03' FROM dual SELECT 3, '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "001" }, new tbiou022 { id = 2, name = "002" }, new tbiou022 { id = 3, name = "003" }, new tbiou022 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '001' as NAME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002' FROM dual SELECT 2, '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '003' FROM dual SELECT 3, '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
//Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); //Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -267,18 +267,18 @@ INTO ""TBIOU022""(""NAME"") VALUES('004')
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } }); iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new[] { new tbiou022 { id = 1, name = "100001" }, new tbiou022 { name = "00001" }, new tbiou022 { id = 2, name = "100002" }, new tbiou022 { name = "00002" }, new tbiou022 { id = 3, name = "100003" }, new tbiou022 { name = "00003" }, new tbiou022 { id = 4, name = "100004" }, new tbiou022 { name = "00004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU022"" t1 Assert.Equal(@"MERGE INTO ""TBIOU022"" t1
USING (SELECT 1 as ID, '100001' as NAME FROM dual USING (SELECT 1 as ""ID"", '100001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '100002' FROM dual SELECT 2, '100002' FROM dual
UNION ALL UNION ALL
SELECT 3, '100003' FROM dual SELECT 3, '100003' FROM dual
UNION ALL UNION ALL
SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '100004' FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME) values (t2.""ID"", t2.""NAME"")
; ;
@ -306,68 +306,68 @@ INTO ""TBIOU022""(""NAME"") VALUES('00004')
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '02' FROM dual SELECT 2, '02', '02' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '03' FROM dual SELECT 3, '03', '03' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME FROM dual USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', '002' FROM dual SELECT 2, '02', '002' FROM dual
UNION ALL UNION ALL
SELECT 3, '03', '003' FROM dual SELECT 3, '03', '003' FROM dual
UNION ALL UNION ALL
SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' FROM dual ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -388,68 +388,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '02', 0, systimestamp FROM dual SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual SELECT 3, '03', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, systimestamp as CREATETIME FROM dual USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", systimestamp as ""CREATETIME"" FROM dual
UNION ALL UNION ALL
SELECT 2, '002', 0, systimestamp FROM dual SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual SELECT 3, '003', 0, systimestamp FROM dual
UNION ALL UNION ALL
SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, systimestamp FROM dual ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.ShenTong
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 2 as ID ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID USING (SELECT 1 as ""ID""
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID USING (SELECT 1 as ""ID""
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbioudb01 class tbioudb01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '01' as NAME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '011' as NAME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 2 as ID, '02' as NAME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '01' as NAME USING (SELECT 1 as ""ID"", '01' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
UNION ALL UNION ALL
SELECT 4, '04' ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB02"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB02"" t1
USING (SELECT 1 as ID, '001' as NAME USING (SELECT 1 as ""ID"", '001' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
UNION ALL UNION ALL
SELECT 4, '004' ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", 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());
@ -152,58 +152,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '02', '02' SELECT 2, '02', '02'
UNION ALL UNION ALL
SELECT 3, '03', '03' SELECT 3, '03', '03'
UNION ALL UNION ALL
SELECT 4, '04', '04' ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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(@"MERGE INTO ""TBIOUDB03"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '02', '002' SELECT 2, '02', '002'
UNION ALL UNION ALL
SELECT 3, '03', '003' SELECT 3, '03', '003'
UNION ALL UNION ALL
SELECT 4, '04', '004' ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", 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());
@ -224,58 +224,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, current_timestamp as CREATETIME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, current_timestamp as CREATETIME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME""
UNION ALL UNION ALL
SELECT 2, '02', 0, current_timestamp SELECT 2, '02', 0, current_timestamp
UNION ALL UNION ALL
SELECT 3, '03', 0, current_timestamp SELECT 3, '03', 0, current_timestamp
UNION ALL UNION ALL
SELECT 4, '04', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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(@"MERGE INTO ""TBIOUDB04"" t1 Assert.Equal(@"MERGE INTO ""TBIOUDB04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, current_timestamp as CREATETIME USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME""
UNION ALL UNION ALL
SELECT 2, '002', 0, current_timestamp SELECT 2, '002', 0, current_timestamp
UNION ALL UNION ALL
SELECT 3, '003', 0, current_timestamp SELECT 3, '003', 0, current_timestamp
UNION ALL UNION ALL
SELECT 4, '004', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", 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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.ShenTong
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 2 as ID ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID USING (SELECT 1 as ""ID""
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1 Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID USING (SELECT 1 as ""ID""
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.""ID"" = t2.ID) SELECT 4 ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"") insert (""ID"")
values (t2.ID)", sql); values (t2.""ID"")", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbiou01 class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '011' as NAME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 2 as ID, '02' as NAME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '01' as NAME USING (SELECT 1 as ""ID"", '01' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '02' SELECT 2, '02'
UNION ALL UNION ALL
SELECT 3, '03' SELECT 3, '03'
UNION ALL UNION ALL
SELECT 4, '04' ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04' ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU02"" t1 Assert.Equal(@"MERGE INTO ""TBIOU02"" t1
USING (SELECT 1 as ID, '001' as NAME USING (SELECT 1 as ""ID"", '001' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '002' SELECT 2, '002'
UNION ALL UNION ALL
SELECT 3, '003' SELECT 3, '003'
UNION ALL UNION ALL
SELECT 4, '004' ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004' ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"") insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql); values (t2.""ID"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -162,68 +162,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME"" ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '011' as NAME ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '011' as ""NAME"" ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 2 as ID1, '02' as ID2, '02' as NAME ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) USING (SELECT 2 as ""ID1"", '02' as ""ID2"", '02' as ""NAME"" ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '01' as NAME USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '01' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '02', '02' SELECT 2, '02', '02'
UNION ALL UNION ALL
SELECT 3, '03', '03' SELECT 3, '03', '03'
UNION ALL UNION ALL
SELECT 4, '04', '04' ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '04' ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU03"" t1 Assert.Equal(@"MERGE INTO ""TBIOU03"" t1
USING (SELECT 1 as ID1, '01' as ID2, '001' as NAME USING (SELECT 1 as ""ID1"", '01' as ""ID2"", '001' as ""NAME""
UNION ALL UNION ALL
SELECT 2, '02', '002' SELECT 2, '02', '002'
UNION ALL UNION ALL
SELECT 3, '03', '003' SELECT 3, '03', '003'
UNION ALL UNION ALL
SELECT 4, '04', '004' ) t2 ON (t1.""ID1"" = t2.ID1 AND t1.""ID2"" = t2.ID2) SELECT 4, '04', '004' ) t2 ON (t1.""ID1"" = t2.""ID1"" AND t1.""ID2"" = t2.""ID2"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"") insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql); values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -244,68 +244,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '011' as NAME, 0 as VERSION, current_timestamp as CREATETIME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 1 as ""ID"", '011' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 2 as ID, '02' as NAME, 0 as VERSION, current_timestamp as CREATETIME ) t2 ON (t1.""ID"" = t2.ID) USING (SELECT 2 as ""ID"", '02' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME"" ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '01' as NAME, 0 as VERSION, current_timestamp as CREATETIME USING (SELECT 1 as ""ID"", '01' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME""
UNION ALL UNION ALL
SELECT 2, '02', 0, current_timestamp SELECT 2, '02', 0, current_timestamp
UNION ALL UNION ALL
SELECT 3, '03', 0, current_timestamp SELECT 3, '03', 0, current_timestamp
UNION ALL UNION ALL
SELECT 4, '04', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '04', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOU04"" t1 Assert.Equal(@"MERGE INTO ""TBIOU04"" t1
USING (SELECT 1 as ID, '001' as NAME, 0 as VERSION, current_timestamp as CREATETIME USING (SELECT 1 as ""ID"", '001' as ""NAME"", 0 as ""VERSION"", current_timestamp as ""CREATETIME""
UNION ALL UNION ALL
SELECT 2, '002', 0, current_timestamp SELECT 2, '002', 0, current_timestamp
UNION ALL UNION ALL
SELECT 3, '003', 0, current_timestamp SELECT 3, '003', 0, current_timestamp
UNION ALL UNION ALL
SELECT 4, '004', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.ID) SELECT 4, '004', 0, current_timestamp ) t2 ON (t1.""ID"" = t2.""ID"")
WHEN MATCHED THEN WHEN MATCHED THEN
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1 update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"") insert (""ID"", ""NAME"", ""VERSION"", ""CREATETIME"")
values (t2.ID, t2.NAME, t2.VERSION, t2.CREATETIME)", sql); values (t2.""ID"", t2.""NAME"", t2.""VERSION"", t2.""CREATETIME"")", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -19,58 +19,58 @@ namespace FreeSql.Tests.SqlServer
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 2 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new[] { new tbioudb01 { id = 1 }, new tbioudb01 { id = 2 }, new tbioudb01 { id = 3 }, new tbioudb01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb01] t1 Assert.Equal(@"MERGE INTO [tbioudb01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbioudb01 class tbioudb01
@ -85,58 +85,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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(@"MERGE INTO [tbioudb02] t1 Assert.Equal(@"MERGE INTO [tbioudb02] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", 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());
@ -154,10 +154,10 @@ WHEN NOT MATCHED THEN
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -165,10 +165,10 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
@ -176,10 +176,10 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -187,16 +187,16 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
@ -204,16 +204,16 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF;", sql); SET IDENTITY_INSERT [tbioudb022] OFF;", 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();
@ -250,16 +250,16 @@ SET IDENTITY_INSERT [tbioudb022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbioudb022] ON;
MERGE INTO [tbioudb022] t1 MERGE INTO [tbioudb022] t1
USING (SELECT 1 as id, N'100001' as name USING (SELECT 1 as [id], N'100001' as [name]
UNION ALL UNION ALL
SELECT 2, N'100002' SELECT 2, N'100002'
UNION ALL UNION ALL
SELECT 3, N'100003' SELECT 3, N'100003'
UNION ALL UNION ALL
SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbioudb022] OFF; SET IDENTITY_INSERT [tbioudb022] OFF;
; ;
@ -283,58 +283,58 @@ INSERT INTO [tbioudb022]([name]) VALUES(N'00001'), (N'00002'), (N'00003'), (N'00
var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'011' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'011' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 2 as id1, N'02' as id2, N'02' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 2 as [id1], N'02' as [id2], N'02' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'02' SELECT 2, N'02', N'02'
UNION ALL UNION ALL
SELECT 3, N'03', N'03' SELECT 3, N'03', N'03'
UNION ALL UNION ALL
SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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(@"MERGE INTO [tbioudb03] t1 Assert.Equal(@"MERGE INTO [tbioudb03] t1
USING (SELECT 1 as id1, N'01' as id2, N'001' as name USING (SELECT 1 as [id1], N'01' as [id2], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'002' SELECT 2, N'02', N'002'
UNION ALL UNION ALL
SELECT 3, N'03', N'003' SELECT 3, N'03', N'003'
UNION ALL UNION ALL
SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", 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());
@ -355,58 +355,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'011' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 2 as id, N'02' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'02', 0, getdate() SELECT 2, N'02', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'03', 0, getdate() SELECT 3, N'03', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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(@"MERGE INTO [tbioudb04] t1 Assert.Equal(@"MERGE INTO [tbioudb04] t1
USING (SELECT 1 as id, N'001' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'001' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'002', 0, getdate() SELECT 2, N'002', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'003', 0, getdate() SELECT 3, N'003', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", 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

@ -19,58 +19,58 @@ namespace FreeSql.Tests.SqlServer
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 2 as id ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id] ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(2, iou.ExecuteAffrows()); Assert.Equal(2, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } }); iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new[] { new tbiou01 { id = 1 }, new tbiou01 { id = 2 }, new tbiou01 { id = 3 }, new tbiou01 { id = 4 } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou01] t1 Assert.Equal(@"MERGE INTO [tbiou01] t1
USING (SELECT 1 as id USING (SELECT 1 as [id]
UNION ALL UNION ALL
SELECT 2 SELECT 2
UNION ALL UNION ALL
SELECT 3 SELECT 3
UNION ALL UNION ALL
SELECT 4 ) t2 ON (t1.[id] = t2.id) SELECT 4 ) t2 ON (t1.[id] = t2.[id])
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id]) insert ([id])
values (t2.id);", sql); values (t2.[id]);", sql);
Assert.Equal(0, iou.ExecuteAffrows()); Assert.Equal(0, iou.ExecuteAffrows());
} }
class tbiou01 class tbiou01
@ -85,68 +85,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "01" }, new tbiou02 { id = 2, name = "02" }, new tbiou02 { id = 3, name = "03" }, new tbiou02 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new[] { new tbiou02 { id = 1, name = "001" }, new tbiou02 { id = 2, name = "002" }, new tbiou02 { id = 3, name = "003" }, new tbiou02 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou02] t1 Assert.Equal(@"MERGE INTO [tbiou02] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);", sql); values (t2.[id], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou02>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());
@ -164,12 +164,12 @@ WHEN NOT MATCHED THEN
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'01' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -177,12 +177,12 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'011' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -190,12 +190,12 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 2 as id, N'02' as name ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
@ -203,18 +203,18 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'01' as name USING (SELECT 1 as [id], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02' SELECT 2, N'02'
UNION ALL UNION ALL
SELECT 3, N'03' SELECT 3, N'03'
UNION ALL UNION ALL
SELECT 4, N'04' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
@ -222,18 +222,18 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'001' as name USING (SELECT 1 as [id], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'002' SELECT 2, N'002'
UNION ALL UNION ALL
SELECT 3, N'003' SELECT 3, N'003'
UNION ALL UNION ALL
SELECT 4, N'004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF;", sql); SET IDENTITY_INSERT [tbiou022] OFF;", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou022>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
@ -270,18 +270,18 @@ SET IDENTITY_INSERT [tbiou022] OFF;", sql);
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON; Assert.Equal(@"SET IDENTITY_INSERT [tbiou022] ON;
MERGE INTO [tbiou022] t1 MERGE INTO [tbiou022] t1
USING (SELECT 1 as id, N'100001' as name USING (SELECT 1 as [id], N'100001' as [name]
UNION ALL UNION ALL
SELECT 2, N'100002' SELECT 2, N'100002'
UNION ALL UNION ALL
SELECT 3, N'100003' SELECT 3, N'100003'
UNION ALL UNION ALL
SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.id) SELECT 4, N'100004' ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name]) insert ([id], [name])
values (t2.id, t2.name);; values (t2.[id], t2.[name]);;
SET IDENTITY_INSERT [tbiou022] OFF; SET IDENTITY_INSERT [tbiou022] OFF;
; ;
@ -305,68 +305,68 @@ INSERT INTO [tbiou022]([name]) VALUES(N'00001'), (N'00002'), (N'00003'), (N'0000
var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" }); var iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'011' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 1 as [id1], N'01' as [id2], N'011' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 2 as id1, N'02' as id2, N'02' as name ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) USING (SELECT 2 as [id1], N'02' as [id2], N'02' as [name] ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "01" }, new tbiou03 { id1 = 2, id2 = "02", name = "02" }, new tbiou03 { id1 = 3, id2 = "03", name = "03" }, new tbiou03 { id1 = 4, id2 = "04", name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'01' as name USING (SELECT 1 as [id1], N'01' as [id2], N'01' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'02' SELECT 2, N'02', N'02'
UNION ALL UNION ALL
SELECT 3, N'03', N'03' SELECT 3, N'03', N'03'
UNION ALL UNION ALL
SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'04' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } }); iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new[] { new tbiou03 { id1 = 1, id2 = "01", name = "001" }, new tbiou03 { id1 = 2, id2 = "02", name = "002" }, new tbiou03 { id1 = 3, id2 = "03", name = "003" }, new tbiou03 { id1 = 4, id2 = "04", name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1 Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as id1, N'01' as id2, N'001' as name USING (SELECT 1 as [id1], N'01' as [id2], N'001' as [name]
UNION ALL UNION ALL
SELECT 2, N'02', N'002' SELECT 2, N'02', N'002'
UNION ALL UNION ALL
SELECT 3, N'03', N'003' SELECT 3, N'03', N'003'
UNION ALL UNION ALL
SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.id1 AND t1.[id2] = t2.id2) SELECT 4, N'04', N'004' ) t2 ON (t1.[id1] = t2.[id1] AND t1.[id2] = t2.[id2])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name update set [name] = t2.[name]
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id1], [id2], [name]) insert ([id1], [id2], [name])
values (t2.id1, t2.id2, t2.name);", sql); values (t2.[id1], t2.[id2], t2.[name]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou03>().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<tbiou03>().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 == "00" + a.id1).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id1).Count());
@ -387,68 +387,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" }); var iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "01" });
var sql = iou.ToSql(); var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'011' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 1 as [id], N'011' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 2 as id, N'02' as name, 0 as version, getdate() as CreateTime ) t2 ON (t1.[id] = t2.id) USING (SELECT 2 as [id], N'02' as [name], 0 as [version], getdate() as [CreateTime] ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(1, iou.ExecuteAffrows()); Assert.Equal(1, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "01" }, new tbiou04 { id = 2, name = "02" }, new tbiou04 { id = 3, name = "03" }, new tbiou04 { id = 4, name = "04" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'01' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'01' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'02', 0, getdate() SELECT 2, N'02', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'03', 0, getdate() SELECT 3, N'03', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'04', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } }); iou = fsql.InsertOrUpdate<tbiou04>().SetSource(new[] { new tbiou04 { id = 1, name = "001" }, new tbiou04 { id = 2, name = "002" }, new tbiou04 { id = 3, name = "003" }, new tbiou04 { id = 4, name = "004" } });
sql = iou.ToSql(); sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou04] t1 Assert.Equal(@"MERGE INTO [tbiou04] t1
USING (SELECT 1 as id, N'001' as name, 0 as version, getdate() as CreateTime USING (SELECT 1 as [id], N'001' as [name], 0 as [version], getdate() as [CreateTime]
UNION ALL UNION ALL
SELECT 2, N'002', 0, getdate() SELECT 2, N'002', 0, getdate()
UNION ALL UNION ALL
SELECT 3, N'003', 0, getdate() SELECT 3, N'003', 0, getdate()
UNION ALL UNION ALL
SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.id) SELECT 4, N'004', 0, getdate() ) t2 ON (t1.[id] = t2.[id])
WHEN MATCHED THEN WHEN MATCHED THEN
update set [name] = t2.name, [version] = t1.[version] + 1 update set [name] = t2.[name], [version] = t1.[version] + 1
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert ([id], [name], [version], [CreateTime]) insert ([id], [name], [version], [CreateTime])
values (t2.id, t2.name, t2.version, t2.CreateTime);", sql); values (t2.[id], t2.[name], t2.[version], t2.[CreateTime]);", sql);
Assert.Equal(4, iou.ExecuteAffrows()); Assert.Equal(4, iou.ExecuteAffrows());
var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList(); var lst = fsql.Select<tbiou04>().Where(a => new[] { 1, 2, 3, 4 }.Contains(a.id)).ToList();
Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count()); Assert.Equal(4, lst.Where(a => a.name == "00" + a.id).Count());

View File

@ -169,7 +169,7 @@ namespace FreeSql.Internal.CommonProvider
object val = col.GetDbValue(d); object val = col.GetDbValue(d);
sb.Append(_commonUtils.RewriteColumn(col, _commonUtils.GetNoneParamaterSqlValue(dbParams, "cu", col, col.Attribute.MapType, val))); sb.Append(_commonUtils.RewriteColumn(col, _commonUtils.GetNoneParamaterSqlValue(dbParams, "cu", col, col.Attribute.MapType, val)));
} }
if (didx == 0) sb.Append(" as ").Append(col.Attribute.Name); if (didx == 0) sb.Append(" as ").Append(_commonUtils.QuoteSqlName(col.Attribute.Name));
++colidx2; ++colidx2;
} }
switch (_orm.Ado.DataType) switch (_orm.Ado.DataType)

View File

@ -35,7 +35,7 @@ namespace FreeSql.Dameng.Curd
var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -43,14 +43,14 @@ namespace FreeSql.Dameng.Curd
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(")"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(")");
return sb.ToString(); return sb.ToString();
} }

View File

@ -35,7 +35,7 @@ namespace FreeSql.Firebird.Curd
var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -43,14 +43,14 @@ namespace FreeSql.Firebird.Curd
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(")"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(")");
return sb.ToString(); return sb.ToString();
} }

View File

@ -35,7 +35,7 @@ namespace FreeSql.Odbc.Dameng
var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -43,14 +43,14 @@ namespace FreeSql.Odbc.Dameng
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(")"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(")");
return sb.ToString(); return sb.ToString();
} }

View File

@ -35,7 +35,7 @@ namespace FreeSql.Odbc.Oracle
var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -43,14 +43,14 @@ namespace FreeSql.Odbc.Oracle
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(")"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(")");
return sb.ToString(); return sb.ToString();
} }

View File

@ -37,7 +37,7 @@ namespace FreeSql.Odbc.SqlServer
if (IdentityColumn != null) sb.Append("SET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" ON;\r\n"); if (IdentityColumn != null) sb.Append("SET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" ON;\r\n");
sb.Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); sb.Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -45,14 +45,14 @@ namespace FreeSql.Odbc.SqlServer
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(");"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(");");
if (IdentityColumn != null) sb.Append(";\r\nSET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" OFF;"); if (IdentityColumn != null) sb.Append(";\r\nSET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" OFF;");

View File

@ -35,7 +35,7 @@ namespace FreeSql.Oracle.Curd
var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -43,14 +43,14 @@ namespace FreeSql.Oracle.Curd
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(")"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(")");
return sb.ToString(); return sb.ToString();
} }

View File

@ -35,7 +35,7 @@ namespace FreeSql.ShenTong.Curd
var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); var sb = new StringBuilder().Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -43,14 +43,14 @@ namespace FreeSql.ShenTong.Curd
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(")"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(")");
return sb.ToString(); return sb.ToString();
} }

View File

@ -37,7 +37,7 @@ namespace FreeSql.SqlServer.Curd
if (IdentityColumn != null) sb.Append("SET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" ON;\r\n"); if (IdentityColumn != null) sb.Append("SET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" ON;\r\n");
sb.Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING ("); sb.Append("MERGE INTO ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" t1 \r\nUSING (");
WriteSourceSelectUnionAll(data, sb, dbParams); WriteSourceSelectUnionAll(data, sb, dbParams);
sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}"))).Append(") \r\n"); sb.Append(" ) t2 ON (").Append(string.Join(" AND ", _table.Primarys.Select(a => $"t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(") \r\n");
var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false); var cols = _table.Columns.Values.Where(a => a.Attribute.IsPrimary == false && a.Attribute.CanUpdate == true && _updateIgnore.ContainsKey(a.Attribute.Name) == false);
if (_doNothing == false && cols.Any()) if (_doNothing == false && cols.Any())
@ -45,14 +45,14 @@ namespace FreeSql.SqlServer.Curd
.Append(" update set ").Append(string.Join(", ", cols.Select(a => .Append(" update set ").Append(string.Join(", ", cols.Select(a =>
a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ? a.Attribute.IsVersion && a.Attribute.MapType != typeof(byte[]) ?
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" : $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t1.{_commonUtils.QuoteSqlName(a.Attribute.Name)} + 1" :
$"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{a.Attribute.Name}" $"{_commonUtils.QuoteSqlName(a.Attribute.Name)} = t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"
))).Append(" \r\n"); ))).Append(" \r\n");
cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true); cols = _table.Columns.Values.Where(a => a.Attribute.CanInsert == true);
if (cols.Any()) if (cols.Any())
sb.Append("WHEN NOT MATCHED THEN \r\n") sb.Append("WHEN NOT MATCHED THEN \r\n")
.Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n") .Append(" insert (").Append(string.Join(", ", cols.Select(a => _commonUtils.QuoteSqlName(a.Attribute.Name)))).Append(") \r\n")
.Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{a.Attribute.Name}"))).Append(");"); .Append(" values (").Append(string.Join(", ", cols.Select(a => $"t2.{_commonUtils.QuoteSqlName(a.Attribute.Name)}"))).Append(");");
if (IdentityColumn != null) sb.Append(";\r\nSET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" OFF;"); if (IdentityColumn != null) sb.Append(";\r\nSET IDENTITY_INSERT ").Append(_commonUtils.QuoteSqlName(TableRuleInvoke())).Append(" OFF;");