엔티티에 Linq를 사용하여 대량/일괄 삽입을 수행하는 방법에 대한 예제를 찾을 수 없습니다. Bulk Insert를하는 방법을 알고 계십니까?대량 삽입 - 엔티티에 Linq을 수행하는 방법
답변
때때로 모델을 혼합해야합니다. 아마도 저장소의이 부분에 SqlBulkCopy
을 사용하고 (이는 대량 복사 API에 직접 연결되므로) 나머지 중 일부는 Entity Framework를 사용합니다. 그리고 필요한 경우, 직접 ADO.NET의 비트. 궁극적으로 목표는 작업을 완료하는 것입니다.
LINQ to Entities를 사용하여 대량 삽입을 수행하는 방법에 대한 완벽한 예는 http://archive.msdn.microsoft.com/LinqEntityDataReader을 참조하십시오. SqlBulkCopy를 쉽게 사용할 수있는 래퍼입니다.
@Marc Gravell은 정확합니다. 작업을 완료하기 위해 모델을 혼합해야하는 경우가 있습니다.
EF 엔티티 (또는 속성 이름이 열 이름과 일치하는 한 모든 종류의 개체)를 대량 삽입 할 클래스를 작성했습니다.
클래스는 일괄 처리 크기, 이전 & 포스트 삽입 이벤트, 대기열 삽입 및 "Firehose 모드"(10 억 개의 개체를 부여하면 배치 크기를 준수 함) 사용자 지정을 지원합니다.
데이터베이스에 대량의 데이터를 삽입, 나는 목록에 모든 삽입 정보를 수집하고 DataTable
에이 목록을 변환하는 데 사용. 그런 다음 해당 목록을 SqlBulkCopy
을 통해 데이터베이스에 삽입합니다. 내 생성 된 목록을 보내
나는 데이터베이스
에 삽입하고 InsertData
이
public static void InsertData<T>(List<T> list,string TabelName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TabelName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
내 대량 삽입 작업
InsertData(LiMyList, "MyTable");
에 전달하려는 모든 대량의 데이터 정보를 포함 LiMyList
최대 성능을 얻기 위해 SqlBulkCopy 및 사용자 지정 데이터 사용을 사용합니다. 그 결과는 정기적으로 삽입 또는 efbulkinsert 확장 사용 AddRange
샘플 사용하는 것보다 20 배 빠른 :
context.BulkInsert(hugeAmountOfEntities);
이것은 멋진 라이브러리입니다. 이전부터 SqlBulkCopy를 작성했는데 이것은 훨씬 쉽고 빠릅니다. – Andrew
- 1. 대량 삽입
- 2. Linq에서 엔티티에 여러 내부 조인을 수행하는 방법
- 3. HQL 대량 삽입
- 4. 대량 삽입/linq SQL에 업데이트하는 방법?
- 5. 대량 삽입 rowterminator 문제
- 6. 대량 삽입 예상 성능
- 7. SQLBulkCopy 또는 대량 삽입
- 8. 대량 레코드 삽입
- 9. SSIS 2008의 대량 삽입
- 10. Java에서 Oracle로 대량 삽입
- 11. 다른 스키마가있는 대량 삽입
- 12. MySQL의 대량 삽입 문제
- 13. C에서 sqlite3 대량 삽입?
- 14. SqlBulkCopy는 일반적인 대량 삽입 방식입니까?
- 15. 대량 삽입 및 "대량 유효성 검사"문제가 있습니다.
- 16. MVC - 동일한 페이지에서 여러 엔티티에 데이터 삽입
- 17. XML 파일에서 MYSQL의 대량 삽입
- 18. SQL Server CE의 대량 삽입
- 19. SQL 대량 삽입 오류 4863
- 20. mysql C API 대량 삽입
- 21. 만들기 대량 삽입/그 갱신
- 22. 상대 경로의 이미지 대량 삽입
- 23. SQL 대량 삽입. 도움이 필요합니다
- 24. 외래 키가있는 테이블에 대량 삽입
- 25. Hibernate/MySQL 대량 삽입 문제
- 26. 서버에서 느린 ssis 대량 삽입
- 27. iphone sqlite 데이터베이스에 대량 삽입
- 28. Javascript를 사용하는 Account 이외의 엔티티에 CRUD 작업을 수행하는 방법
- 29. EF- 엔티티에 Linq를 사용하여 'Not In'을 수행하는 방법
- 30. C# SQLite 대량 삽입 또는 매개 변수화 된 삽입 효율성
오 noes - 여기를 발견 죽은 링크 –
를 ... https://github.com /matthewschrager/Repository/blob/master/Repository.EntityFramework/EntityDataReader.cs –