- 修改 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

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Dameng
var iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 });
var sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 1 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn01>().IfExistsDoNothing().SetSource(new tbioudn01 { id = 2 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
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 } });
sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
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 } });
sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDN01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
}
class tbioudn01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "01" });
var sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 1, name = "011" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn02>().IfExistsDoNothing().SetSource(new tbioudn02 { id = 2, name = "02" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "01" });
var sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 1, name = "011" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn022>().IfExistsDoNothing().SetSource(new tbioudn022 { id = 2, name = "02" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -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" } });
sql = iou.ToSql();
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
SELECT 2, '100002' FROM dual
UNION ALL
SELECT 3, '100003' FROM dual
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
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 sql = iou.ToSql();
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 1, id2 = "02", name = "011" });
sql = iou.ToSql();
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudn03>().IfExistsDoNothing().SetSource(new tbioudn03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql();
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '02' FROM dual
UNION ALL
SELECT 3, '03', '03' FROM dual
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '002' FROM dual
UNION ALL
SELECT 3, '03', '003' FROM dual
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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();
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 sql = iou.ToSql();
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
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 = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 1, name = "011" });
sql = iou.ToSql();
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
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 = fsql.InsertOrUpdate<tbioudn04>().IfExistsDoNothing().SetSource(new tbioudn04 { id = 2, name = "02" });
sql = iou.ToSql();
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
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 = 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();
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
SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual
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
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 = 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();
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
SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual
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
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();
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());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Dameng
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
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();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
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();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
}
class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -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" } });
sql = iou.ToSql();
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
SELECT 2, '100002' FROM dual
UNION ALL
SELECT 3, '100003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
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 sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '02' FROM dual
UNION ALL
SELECT 3, '03', '03' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '002' FROM dual
UNION ALL
SELECT 3, '03', '003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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();
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 sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = 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();
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
SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = 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();
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
SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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();
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());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Oracle
var iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
var sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 1 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb01>().IfExistsDoNothing().SetSource(new tbioudb01 { id = 2 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
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 } });
sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
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 } });
sql = iou.ToSql();
Assert.Equal(@"MERGE INTO ""TBIOUDB01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
}
class tbioudb01
@ -83,58 +83,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "01" });
var sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 1, name = "011" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb02>().IfExistsDoNothing().SetSource(new tbioudb02 { id = 2, name = "02" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -151,58 +151,58 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "01" });
var sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 1, name = "011" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb022>().IfExistsDoNothing().SetSource(new tbioudb022 { id = 2, name = "02" });
sql = iou.ToSql();
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -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" } });
sql = iou.ToSql();
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
SELECT 2, '100002' FROM dual
UNION ALL
SELECT 3, '100003' FROM dual
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
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 sql = iou.ToSql();
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql();
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbioudb03>().IfExistsDoNothing().SetSource(new tbioudb03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql();
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '02' FROM dual
UNION ALL
SELECT 3, '03', '03' FROM dual
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '002' FROM dual
UNION ALL
SELECT 3, '03', '003' FROM dual
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
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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();
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 sql = iou.ToSql();
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
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 = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 1, name = "011" });
sql = iou.ToSql();
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
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 = fsql.InsertOrUpdate<tbioudb04>().IfExistsDoNothing().SetSource(new tbioudb04 { id = 2, name = "02" });
sql = iou.ToSql();
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
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 = 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();
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
SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual
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
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 = 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();
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
SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual
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
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();
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());

View File

@ -17,58 +17,58 @@ namespace FreeSql.Tests.Odbc.Oracle
var iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
var sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 1 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou01>().SetSource(new tbiou01 { id = 2 });
sql = iou.ToSql();
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
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();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
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();
Assert.Equal(@"MERGE INTO ""TBIOU01"" t1
USING (SELECT 1 as ID FROM dual
USING (SELECT 1 as ""ID"" FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
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
insert (""ID"")
values (t2.ID)", sql);
values (t2.""ID"")", sql);
iou.ExecuteAffrows();
}
class tbiou01
@ -83,68 +83,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "01" });
var sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 1, name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou02>().SetSource(new tbiou02 { id = 2, name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -161,68 +161,68 @@ WHEN NOT MATCHED THEN
var iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "01" });
var sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 1, name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou022>().SetSource(new tbiou022 { id = 2, name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02' FROM dual
UNION ALL
SELECT 3, '03' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '002' FROM dual
UNION ALL
SELECT 3, '003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID"", ""NAME"")
values (t2.ID, t2.NAME)", sql);
values (t2.""ID"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
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());
@ -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" } });
sql = iou.ToSql();
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
SELECT 2, '100002' FROM dual
UNION ALL
SELECT 3, '100003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
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 sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 1, id2 = "01", name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
iou.ExecuteAffrows();
iou = fsql.InsertOrUpdate<tbiou03>().SetSource(new tbiou03 { id1 = 2, id2 = "02", name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '02' FROM dual
UNION ALL
SELECT 3, '03', '03' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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" } });
sql = iou.ToSql();
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
SELECT 2, '02', '002' FROM dual
UNION ALL
SELECT 3, '03', '003' FROM dual
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
update set ""NAME"" = t2.NAME
update set ""NAME"" = t2.""NAME""
WHEN NOT MATCHED THEN
insert (""ID1"", ""ID2"", ""NAME"")
values (t2.ID1, t2.ID2, t2.NAME)", sql);
values (t2.""ID1"", t2.""ID2"", t2.""NAME"")", sql);
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();
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 sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 1, name = "011" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = fsql.InsertOrUpdate<tbiou04>().SetSource(new tbiou04 { id = 2, name = "02" });
sql = iou.ToSql();
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = 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();
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
SELECT 2, '02', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '03', 0, systimestamp FROM dual
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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 = 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();
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
SELECT 2, '002', 0, systimestamp FROM dual
UNION ALL
SELECT 3, '003', 0, systimestamp FROM dual
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
update set ""NAME"" = t2.NAME, ""VERSION"" = t1.""VERSION"" + 1
update set ""NAME"" = t2.""NAME"", ""VERSION"" = t1.""VERSION"" + 1
WHEN NOT MATCHED THEN
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();
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());

View File

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

View File

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