- 增加 IInsertOrUpdate.SetSource(items, tempPrimarys) 指定临时主键参数;#1160

This commit is contained in:
2881099
2022-06-22 21:09:04 +08:00
parent 5fec1254cf
commit 1155ffc781
27 changed files with 109 additions and 101 deletions

View File

@ -373,11 +373,10 @@ WHEN NOT MATCHED THEN
}
[Fact]
public void InsertOrUpdate_OnColumns()
public void InsertOrUpdate_TempPrimarys()
{
var 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" } })
.OnColumns("name");
.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" } }, a => a.name);
var sql = iou.ToSql();
Assert.Equal(@"MERGE INTO [tbiou03] t1
USING (SELECT 1 as [id1], N'01' as [id2], N'001' as [name]
@ -388,7 +387,7 @@ UNION ALL
UNION ALL
SELECT 4, N'04', N'004' ) t2 ON (t1.[name] = t2.[name])
WHEN MATCHED THEN
update set [name] = t2.[name]
update set [id1] = t2.[id1], [id2] = t2.[id2]
WHEN NOT MATCHED THEN
insert ([id1], [id2], [name])
values (t2.[id1], t2.[id2], t2.[name]);", sql);