using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using Microsoft.Data.SqlClient;
public static void Main()
using (var context = new EntityContext())
context.Database.EnsureCreated();
var invoices = GenerateInvoices(2000, 5);
using (var context = new EntityContext())
context.BulkInsert(invoices, options => options.LegacyIncludeGraph = true);
public static List<Invoice> GenerateInvoices(int countInvoice, int countInvoiceItem)
List<Invoice> list = new List<Invoice>();
for(int i = 0; i < countInvoice; i++)
var invoice = new Invoice() { Number = "Number_" + i, C1 = "C1_" + i, C2 = "C2_" + i, C3 = "C3_" + i, C4 = "C4_" + i, C5 = "C5_" + i, Items = new List<InvoiceItem>() };
for(int j = 0; j < countInvoiceItem; j++)
invoice.Items.Add(new InvoiceItem() { ProductName = "ProductName_" + i + "_" + j, C1 = "C1_" + i, C2 = "C2_" + i, C3 = "C3_" + i, C4 = "C4_" + i, C5 = "C5_" + i });
public class EntityContext : DbContext
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseSqlServer(new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()));
base.OnConfiguring(optionsBuilder);
public DbSet<Invoice> Invoices { get; set; }
public DbSet<InvoiceItem> InvoiceItems { get; set; }
public int InvoiceID { get; set; }
public string Number { get; set; }
public List<InvoiceItem> Items { get; set; }
public string C1 { get; set; }
public string C2 { get; set; }
public string C3 { get; set; }
public string C4 { get; set; }
public string C5 { get; set; }
public int InvoiceItemID { get; set; }
public string ProductName { get; set; }
public Invoice Invoice { get; set; }
public string C1 { get; set; }
public string C2 { get; set; }
public string C3 { get; set; }
public string C4 { get; set; }
public string C5 { get; set; }