나는 더 무지개로 벌크 삽입을해야했습니다.

.net c# dapper dapper-extensions dapper-rainbow

문제

나는 dapper rainbow database.cs 확장을 사용하고 있습니다.

private void insertList(IEnumerable<myObject> list)
    {
          using (SqlConnection conn = new SqlConnection(connectionString))
        {
            var db = myDB.Init(conn, commandTimeout: 100);
            db.myTable.tableName = "ds.myTable";
            Parallel.ForEach(dsList, a => db.myTableInsert(a)
                        );
            db.Dispose();
        }
    }

이것은 작동하지 않을 것입니다, 나는 내가 열어야하고 Parallel.ForEach 내부의 연결을 닫아야한다고 생각합니다. 그것이 쓰기 방법인가요?

저는이 확장 기능을 사용하고 싶었습니다.이 확장 기능은 매우 유용하고 손이 듭니다.하지만이 목록을 삽입하는 문제가 있습니다. 나는이 확장 기능을 사용하고 목록을 사용하는 것에 관해서는 온라인으로 아무것도 찾을 수 없었다.

수락 된 답변

일반적으로 데이터베이스 연결은 스레드로부터 안전하지 않으므로 같은 연결에서 병렬로 삽입을 수행하면 문제가 발생할 수 있습니다.

그래서 저는 그렇습니다. Parallel.ForEach() 내부에서 연결을 열고 닫아야한다고 말할 것입니다. 벤치마킹을 원할 수도 있습니다. 필자는 다중 데이터베이스 연결을 사용하는 것과 같이 병렬로 삽입하는 것이 단일 연결의 일반 루프에서 수행하는 것보다 더 빠를 것이라고 완전히 확신하지는 않습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.