Created
May 3, 2017 08:32
-
-
Save ErikSchierboom/cf3f73740b6e088f2fb6e35fef32675f to your computer and use it in GitHub Desktop.
Bulk insert MySQL using EF Core
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.ComponentModel.DataAnnotations; | |
using System.ComponentModel.DataAnnotations.Schema; | |
using Microsoft.EntityFrameworkCore; | |
using Microsoft.Extensions.Logging; | |
namespace DbBulkPerformance | |
{ | |
public class Program | |
{ | |
public class MySqlContext : DbContext | |
{ | |
public DbSet<Person> Persons { get; set; } | |
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) | |
{ | |
var loggerFactory = new LoggerFactory(); | |
loggerFactory.AddConsole(); | |
optionsBuilder.UseLoggerFactory(loggerFactory); | |
optionsBuilder.UseMySql(@"Server=docker-vm;Database=PerformanceTest;Uid=test;Pwd=test;"); | |
} | |
} | |
public class SqlServerContext : DbContext | |
{ | |
public DbSet<Person> Persons { get; set; } | |
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) | |
{ | |
var loggerFactory = new LoggerFactory(); | |
loggerFactory.AddConsole(); | |
optionsBuilder.UseLoggerFactory(loggerFactory); | |
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=PerformanceTest;Trusted_Connection=True;"); | |
} | |
} | |
public class Person | |
{ | |
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] | |
public int Id { get; set; } | |
public string Name { get; set; } | |
} | |
public static void Main(string[] args) | |
{ | |
var persons = new[] | |
{ | |
new Person { Id = 1, Name = "John" }, | |
new Person { Id = 2, Name = "Paul" }, | |
new Person { Id = 3, Name = "George" }, | |
}; | |
using (var mySqlContext = new MySqlContext()) | |
{ | |
foreach (var person in persons) | |
mySqlContext.Add(person); | |
mySqlContext.SaveChanges(); | |
} | |
using (var sqlServerContext = new SqlServerContext()) | |
{ | |
foreach (var person in persons) | |
sqlServerContext.Add(person); | |
sqlServerContext.SaveChanges(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment