using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.Data.SqlClient;
public static void Main()
DapperPlusManager.Entity<Order>()
.Identity(x => x.OrderID, true);
DapperPlusManager.Entity<OrderItem>()
.Identity(x => x.OrderItemID, true);
DapperPlusManager.Entity<OrderItem>("OrderItem_KeepIdentiytValue")
.UseBulkOptions(options => { options.InsertKeepIdentity = true; });
var orders = new List<Order>();
var order1 = new Order() { Number = "Order #1", TotalAmount = 1199m, CreatedDate = DateTime.Now, IsActive = true};
order1.Items = new List<OrderItem>() {
new OrderItem() { OrderItemID = 13, ItemName = "Dapper Plus", Quantity = 4, Price = 1199m }
var order2 = new Order() { Number = "Order #2", TotalAmount = 2098m, CreatedDate = DateTime.Now, IsActive = true};
order2.Items = new List<OrderItem>() {
new OrderItem() { OrderItemID = 66, ItemName = "Entity Framework Extensions", Quantity = 9, Price = 1399m },
new OrderItem() { OrderItemID = 99, ItemName = "C# Eval Expression", Quantity = 9, Price = 699m }
var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer());
connection.CreateTable<Order>();
connection.CreateTable<OrderItem>();
connection.BulkInsert(orders).ThenBulkInsert("OrderItem_KeepIdentiytValue", x => x.Items);
FiddleHelper.WriteTable(connection.Query<Order>("SELECT * FROM [Order]"));
FiddleHelper.WriteTable(connection.Query<OrderItem>("SELECT * FROM [OrderItem]"));
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OrderID { get; set; }
public string Number { get; set; }
public decimal TotalAmount { get; set; }
public DateTime CreatedDate { get; set; }
public bool IsActive { get; set; }
public List<OrderItem> Items { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OrderItemID { get; set; }
public int OrderID { get; set; }
public string ItemName { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }