using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using Microsoft.Data.SqlClient;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
public static void Main()
using (var context = new EntityContext())
context.Database.EnsureCreated();
var parents = new ParentData(){
Children = new List<ChildData>(){
using (var context = new EntityContext())
context.BulkInsert(new List<ParentData>() { parents }, options => options.IncludeGraph = true);
FiddleHelper.WriteTable("1 - Invoices", context.Parents);
FiddleHelper.WriteTable("2 - InvoiceItems", context.Children);
public class EntityContext : DbContext
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseSqlServer(new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()));
base.OnConfiguring(optionsBuilder);
public DbSet<ParentData> Parents { get; set; }
public DbSet<ChildData> Children { get; set; }
[Key(), Column("parent_id")]
public int ParentId { get; set; }
public string Name { get; set; }
public List<ChildData> Children { get; set; }
[Key(), Column("child_id")]
public int ChildId { get; set; }
public int ParentId { get; set; }
public string Name { get; set; }
public ParentData Parent { get; set; }