Question: What is the best way to perform bulk inserts into an MS Access database from .NET? Using ADO.NET, it is taking way over an hour to write out a large dataset.

*Note that my original post, before I "refactored" it, had both the question and answer in the question part. I took Igor Turman's suggestion and re-wrote it in two parts - the question above and followed by my answer.*

Answer: 
You can use a KORM, object relation mapper that allows bulk operations over MsAccess.

```
database
  .Query<Movie>()
  .AsDbSet()
  .BulkInsert(_data);

```

or if you have source reader, you can directly use `MsAccessBulkInsert` class:

```
using (var bulkInsert = new MsAccessBulkInsert("connection string"))
{
   bulkInsert.Insert(sourceReader);
}

```

KORM is available from nuget [Kros.KORM.MsAccess](https://www.nuget.org/packages/Kros.KORM.MsAccess/) and it's opensource on [GitHub](https://github.com/Kros-sk/Kros.Libs)
Another method to consider, involving linking tables via DAO or ADOX then executing statements like this:

```
SELECT * INTO Table1 FROM _LINKED_Table1

```

Please see my full answer here:  

[MS Access Batch Update via ADO.Net and COM Interoperability](https://stackoverflow.com/questions/15788441/ms-access-batch-update-via-ado-net-and-com-interoperability/26287252#26287252)