2017-11-08 13 views
0

System.Data.SqlClient.SqlBulkCopy를 사용하여 데이터베이스 서버에 DataTable을 복사하는 기능에 대한 C#의 단위 테스트를 작성하고 있습니다.SqlBulkCopy를 사용하여 SQLLite db에 연결

단위 테스트를 위해 SQLLite를 사용하고 SqlBulkCopy를 사용하여 메모리 데이터베이스의 SQLLite에 연결 한 다음 해당 테스트 데이터를 SQLLite db로 대량 복사하려고합니다.

그러나 연결 문자열을 올바르게 가져올 수 없습니다.

나는 처음 시도 할 때 단순히 시간 초과 절망에서

var bcp = new SqlBulkCopy("Data Source=:memory:") 

을 시도 그럼 다음

var bcp = new SqlBulkCopy("Data Source=:memory:;Cache=Shared") 

Cache 를 인식하지 않았다 어떤

var bcp = new SqlBulkCopy("FullUri=file::memory:?cache=shared") 

시도 데이터베이스에 연결하십시오.

여기에서 가능한 작업을 수행 할 수 있습니까? 그렇다면 누군가가 연결 문자열로 나를 도울 수 있습니까?

답변

0

SQLite에 SqlBulkCopy을 사용할 수 없습니다. SqlBulkCopy이 SQL Server에 대해 수행되었습니다.

일반적으로 SQLite의 성능을 크게 향상시키는 트릭은 트랜잭션이 사용되는지 확인하는 것입니다.


면책 조항 : 나는 .NET Bulk Operations

이 라이브러리의 소유자가 무료로하지 않습니다 해요하지만 당신은 쉽게 모든 대량 작업을 수행하고 사용자 정의 할 수 있습니다 :

  • 대량 삽입
  • 대량 삭제
  • 일괄 업데이트
  • 대량 병합

// Easy to use 
var bulk = new BulkOperation(connection); 
bulk.BulkInsert(dt); 
bulk.BulkUpdate(dt); 
bulk.BulkDelete(dt); 
bulk.BulkMerge(dt); 

// Easy to customize 
var bulk = new BulkOperation<Customer>(connection); 
bulk.BatchSize = 1000; 
bulk.ColumnInputExpression = c => new { c.Name, c.FirstName }; 
bulk.ColumnOutputExpression = c => c.CustomerID; 
bulk.ColumnPrimaryKeyExpression = c => c.Code; 
bulk.BulkMerge(customers);