private static async Task SeedSourceSchema(DbContextOptions <SampleDbContext> dbOptions) { var timestamp = new DateTime(2020, 1, 1); using (var ctx = new SourceSampleDbContext(dbOptions)) { if (await ctx.SampleItems.AnyAsync()) { await ctx.TruncateAsync <SampleItem>(); } ctx.SampleItems.Add(new SampleItem { Id = 1, Description = "Item 1", Timestamp = timestamp }); ctx.SampleItems.Add(new SampleItem { Id = 2, Description = "Item 2", Timestamp = timestamp.AddDays(-1) }); ctx.SampleItems.Add(new SampleItem { Id = 3, Description = "Item 3", Timestamp = timestamp.AddDays(1) }); await ctx.SaveChangesAsync(); Log.Information("[source].[SampleItems] seeded"); } }
static async Task Main(string[] args) { // Set DB Connection String here var dbConnectionString = ""; Log.Logger = new LoggerConfiguration() .WriteTo.Console() .MinimumLevel.Verbose() .CreateLogger(); var loggerFactory = new LoggerFactory(new[] { new SerilogLoggerProvider() }); var dbOptionsBuilder = new DbContextOptionsBuilder <SampleDbContext>(); dbOptionsBuilder .UseLoggerFactory(loggerFactory) .UseSqlServer(dbConnectionString); var dbOptions = dbOptionsBuilder.Options; await SeedSourceSchema(dbOptions); using (var ctx = new SourceSampleDbContext(dbOptions)) { await ctx.MergeIntoAsync <SampleItem>("[target].[SampleItems]"); } // ... or ... using (var ctx = new TargetSampleDbContext(dbOptions)) { await ctx.MergeFromAsync <SampleItem>("[source].[SampleItems]"); } Log.CloseAndFlush(); }