using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using Microsoft.Data.SqlClient;
public static void Main()
using (var context = new EntityContext())
context.Database.EnsureCreated();
using (var context = new EntityContext())
invoices = context.Invoices.Include(x => x.InvoiceItems).ToList();
invoices.ForEach(x => {x.Description = x.Description.Replace("Invoice", "Updated"); x.InvoiceItems.ForEach(y => y.Description = y.Description.Replace("Invoice", "Updated"));});
using (var context = new EntityContext())
context.BulkMerge(invoices, options => {
options.IncludeGraph = true;
options.IncludeGraphOperationBuilder = operation =>
if (operation is BulkOperation<InvoiceItem>)
var bulk = (BulkOperation<InvoiceItem>) operation;
using (var context = new EntityContext())
FiddleHelper.WriteTable(context.Invoices.ToList().Select(x => new { x.InvoiceID, x.Description}));
FiddleHelper.WriteTable(context.InvoiceItems.ToList());
public static void GenerateData()
List<Invoice> list = new List<Invoice>() {
new Invoice() { Description = "Invoice_A", InvoiceItems = new List<InvoiceItem>() { new InvoiceItem() { Description = "Invoice_A_InvoiceItem_A" } , new InvoiceItem() { Description = "Invoice_A_InvoiceItem_B" }}},
new Invoice() { Description = "Invoice_B", InvoiceItems = new List<InvoiceItem>() { new InvoiceItem() { Description = "Invoice_B_InvoiceItem_A" } , new InvoiceItem() { Description = "Invoice_B_InvoiceItem_B" }}}};
using (var context = new EntityContext())
context.BulkInsert(list, options => options.IncludeGraph = true);
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 Description { get; set; }
public List<InvoiceItem> InvoiceItems { get; set; }
public int InvoiceItemID { get; set; }
public string Description { get; set; }