Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 根据条件插入数据_.net_Postgresql_Dapper - Fatal编程技术网

.net 根据条件插入数据

.net 根据条件插入数据,.net,postgresql,dapper,.net,Postgresql,Dapper,我试图弄清楚是否有可能使用Dapper将对象列表插入到表中,但也要应用某种检查来查看应该包含哪些数据 var data = new List<TestInsertDataDto> { new TestInsertDataDto { InsertId = 1, Value = 2 }, new TestInsertDataDto { InsertId = 2, Value = 3 }, new TestInsertDataDto { InsertId = 3,

我试图弄清楚是否有可能使用Dapper将对象列表插入到表中,但也要应用某种检查来查看应该包含哪些数据

var data = new List<TestInsertDataDto>
{
    new TestInsertDataDto { InsertId = 1, Value = 2 },
    new TestInsertDataDto { InsertId = 2, Value = 3 },
    new TestInsertDataDto { InsertId = 3, Value = 6 }
};

await connection.ExecuteAsync(@"
    INSERT INTO test_data (insertid, value)
    VALUES (@InsertId, @Value)
    -- I'd like to do a row per row check here to determine if the row should be
    -- inserted or if this row for some reason shouldn't be inserted. This check
    -- requires a query on the test_data table and a join on another table.", data)
;
var数据=新列表
{
新TestInsertDataDto{InsertId=1,Value=2},
新TestInsertDataDto{InsertId=2,Value=3},
新TestInsertDataDto{InsertId=3,Value=6}
};
等待连接。ExecuteAsync(@“
插入测试数据(插入ID,值)
值(@InsertId,@Value)
--我想在这里每行检查一行,以确定该行是否应该
--已插入或由于某种原因不应插入此行。此检查
--需要对test_数据表进行查询,并对另一个表进行联接。“,data)
;

您可以根据另一个查询有条件地插入记录,使用
EXISTS
NOT EXISTS

这看起来像:

INSERT INTO test_data (insertid, value)
SELECT @InsertId, @Value
WHERE EXISTS (
    SELECT *
    FROM test_data
    WHERE -- some condition
)

您可以根据另一个查询有条件地插入记录,该查询使用
存在
不存在

这看起来像:

INSERT INTO test_data (insertid, value)
SELECT @InsertId, @Value
WHERE EXISTS (
    SELECT *
    FROM test_data
    WHERE -- some condition
)

你能做到。我建议您为此创建一个存储过程。使用dapper将参数传递给过程,并在存储过程中尝试下面的代码

INSERT INTO table (id, val) SELECT @InsertId, @Value WHERE EXISTS ( SELECT * FROM test_data WHERE -- your condition )

你能做到。我建议您为此创建一个存储过程。使用dapper将参数传递给过程,并在存储过程中尝试下面的代码

INSERT INTO table (id, val) SELECT @InsertId, @Value WHERE EXISTS ( SELECT * FROM test_data WHERE -- your condition )

我能在那里做“每行一行”的检查吗?与测试数据td中的
类似,其中@Value>td.Value或@InsertId>td.InsertId
将“每行”执行此检查。此函数将返回受影响的记录,因此您可以进行检查:)我可以在那里执行“每行一行”检查吗?与测试数据td中的
类似,其中@Value>td.Value或@InsertId>td.InsertId
将“每行”执行此检查。此函数将返回受影响的记录,因此您可以检查它:)