private static void AddEntitiesToMultipleContexts( IServiceProvider serviceProvider, string dbName1, string dbName2) { using var context1 = new BronieContext(serviceProvider, dbName1); using var context2 = new BronieContext(serviceProvider, dbName2); for (var i = 0; i < 29; i++) { context1.Add( new Pegasus { Name = "Rainbow Dash " + i }); context2.Add( new Pegasus { Name = "Fluttershy " + i }); context1.Add( new Pegasus { Name = "Fluttershy " + i }); } context1.SaveChanges(); context2.SaveChanges(); }
public async Task Only_one_part_of_a_composite_key_needs_to_vary_for_uniquness() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var ids = new int[3]; using (var context = new BronieContext(serviceProvider)) { var pony1 = context.Add(new EarthPony { Id2 = 7, Name = "Apple Jack 1" }).Entity; var pony2 = context.Add(new EarthPony { Id2 = 7, Name = "Apple Jack 2" }).Entity; var pony3 = context.Add(new EarthPony { Id2 = 7, Name = "Apple Jack 3" }).Entity; await context.SaveChangesAsync(); ids[0] = pony1.Id1; ids[1] = pony2.Id1; ids[2] = pony3.Id1; } using (var context = new BronieContext(serviceProvider)) { var ponies = context.EarthPonies.ToList(); Assert.Equal(ponies.Count, ponies.Count(e => e.Name == "Apple Jack 1") * 3); Assert.Equal("Apple Jack 1", ponies.Single(e => e.Id1 == ids[0]).Name); Assert.Equal("Apple Jack 2", ponies.Single(e => e.Id1 == ids[1]).Name); Assert.Equal("Apple Jack 3", ponies.Single(e => e.Id1 == ids[2]).Name); ponies.Single(e => e.Id1 == ids[1]).Name = "Pinky Pie 2"; await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider)) { var ponies = context.EarthPonies.ToArray(); Assert.Equal(ponies.Length, ponies.Count(e => e.Name == "Apple Jack 1") * 3); Assert.Equal("Apple Jack 1", ponies.Single(e => e.Id1 == ids[0]).Name); Assert.Equal("Pinky Pie 2", ponies.Single(e => e.Id1 == ids[1]).Name); Assert.Equal("Apple Jack 3", ponies.Single(e => e.Id1 == ids[2]).Name); context.EarthPonies.RemoveRange(ponies); await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider)) { Assert.Equal(0, context.EarthPonies.Count()); } }
public async Task Only_one_part_of_a_composite_key_needs_to_vary_for_uniqueness() { var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlite() .ServiceCollection() .BuildServiceProvider(); var ids = new int[3]; using (var context = new BronieContext(serviceProvider, "CompositeEarthPonies")) { context.Database.EnsureCreated(); var pony1 = context.Add(new EarthPony { Id1 = 1, Id2 = 7, Name = "Apple Jack 1" }).Entity; var pony2 = context.Add(new EarthPony { Id1 = 2, Id2 = 7, Name = "Apple Jack 2" }).Entity; var pony3 = context.Add(new EarthPony { Id1 = 3, Id2 = 7, Name = "Apple Jack 3" }).Entity; await context.SaveChangesAsync(); ids[0] = pony1.Id1; ids[1] = pony2.Id1; ids[2] = pony3.Id1; } using (var context = new BronieContext(serviceProvider, "CompositeEarthPonies")) { var ponies = context.EarthPonies.ToList(); Assert.Equal(ponies.Count, ponies.Count(e => e.Name == "Apple Jack 1") * 3); Assert.Equal("Apple Jack 1", ponies.Single(e => e.Id1 == ids[0]).Name); Assert.Equal("Apple Jack 2", ponies.Single(e => e.Id1 == ids[1]).Name); Assert.Equal("Apple Jack 3", ponies.Single(e => e.Id1 == ids[2]).Name); ponies.Single(e => e.Id1 == ids[1]).Name = "Pinky Pie 2"; await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositeEarthPonies")) { var ponies = context.EarthPonies.ToArray(); Assert.Equal(ponies.Length, ponies.Count(e => e.Name == "Apple Jack 1") * 3); Assert.Equal("Apple Jack 1", ponies.Single(e => e.Id1 == ids[0]).Name); Assert.Equal("Pinky Pie 2", ponies.Single(e => e.Id1 == ids[1]).Name); Assert.Equal("Apple Jack 3", ponies.Single(e => e.Id1 == ids[2]).Name); context.EarthPonies.RemoveRange(ponies); await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositeEarthPonies")) { Assert.Equal(0, context.EarthPonies.Count()); } }
private static void AddEntities(IServiceProvider serviceProvider) { using (var context = new BronieContext(serviceProvider, "Bronies")) { for (var i = 0; i < 10; i++) { context.Add(new Pegasus { Name = "Rainbow Dash " + i }); context.Add(new Pegasus { Name = "Fluttershy " + i }); } context.SaveChanges(); } }
private static async Task AddEntitiesAsync(IServiceProvider serviceProvider) { using (var context = new BronieContext(serviceProvider)) { for (var i = 0; i < 50; i++) { context.Add(new Pegasus { Name = "Rainbow Dash " + i }); context.Add(new Pegasus { Name = "Fluttershy " + i }); } await context.SaveChangesAsync(); } }
private static void AddEntities(IServiceProvider serviceProvider, string name) { using (var context = new BronieContext(serviceProvider, name)) { for (var i = 0; i < 10; i++) { context.Add( new Pegasus { Name = "Rainbow Dash " + i }); context.Add( new Pegasus { Name = "Fluttershy " + i }); } context.SaveChanges(); } }
private static void AddEntitiesWithIds(IServiceProvider serviceProvider, int idOffset, string name) { using (var context = new BronieContext(serviceProvider, name)) { for (var i = 1; i < 11; i++) { context.Add( new Pegasus { Name = "Rainbow Dash " + i, Identifier = i * 100 + idOffset }); context.Add( new Pegasus { Name = "Fluttershy " + i, Identifier = i * 100 + idOffset + 1 }); } context.SaveChanges(); } }
public async Task Can_use_GUIDs_end_to_end_async() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var guids = new List <Guid>(); var guidsHash = new HashSet <Guid>(); using (var context = new BronieContext(serviceProvider)) { for (var i = 0; i < 10; i++) { guids.Add(context.Add(new Pegasus { Name = "Rainbow Dash " + i }).Entity.Id); guidsHash.Add(guids.Last()); } await context.SaveChangesAsync(); } Assert.Equal(10, guidsHash.Count); using (var context = new BronieContext(serviceProvider)) { var pegasuses = await context.Pegasuses.OrderBy(e => e.Name).ToListAsync(); for (var i = 0; i < 10; i++) { Assert.Equal(guids[i], pegasuses[i].Id); } } }
public async Task Can_use_sequential_GUID_end_to_end_async() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .BuildServiceProvider(); using (var context = new BronieContext(serviceProvider, "GooieBronies")) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); for (var i = 0; i < 50; i++) { context.Add(new Pegasus { Name = "Rainbow Dash " + i }); } await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "GooieBronies")) { var pegasuses = await context.Pegasuses.OrderBy(e => e.Id).ToListAsync(); for (var i = 0; i < 50; i++) { Assert.Equal("Rainbow Dash " + i, pegasuses[i].Name); } } }
public async Task Can_use_GUIDs_end_to_end_async() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var guids = new List<Guid>(); var guidsHash = new HashSet<Guid>(); using (var context = new BronieContext(serviceProvider)) { for (var i = 0; i < 10; i++) { guids.Add(context.Add(new Pegasus { Name = "Rainbow Dash " + i }).Entity.Id); guidsHash.Add(guids.Last()); } await context.SaveChangesAsync(); } Assert.Equal(10, guidsHash.Count); using (var context = new BronieContext(serviceProvider)) { var pegasuses = await context.Pegasuses.OrderBy(e => e.Name).ToListAsync(); for (var i = 0; i < 10; i++) { Assert.Equal(guids[i], pegasuses[i].Id); } } }
public async Task Can_use_sequential_GUID_end_to_end_async() { var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlServer() .ServiceCollection() .BuildServiceProvider(); using (var context = new BronieContext(serviceProvider, "GooieBronies")) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); for (var i = 0; i < 50; i++) { context.Add(new Pegasus { Name = "Rainbow Dash " + i }); } await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "GooieBronies")) { var pegasuses = await context.Pegasuses.OrderBy(e => e.Id).ToListAsync(); for (var i = 0; i < 50; i++) { Assert.Equal("Rainbow Dash " + i, pegasuses[i].Name); } } }
public async Task Can_use_explicit_values() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .BuildServiceProvider(); var guids = new List<Guid>(); using (var context = new BronieContext(serviceProvider, "GooieExplicitBronies")) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); for (var i = 0; i < 50; i++) { guids.Add(context.Add(new Pegasus { Name = "Rainbow Dash " + i, Index = i, Id = Guid.NewGuid() }).Entity.Id); } await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "GooieExplicitBronies")) { var pegasuses = await context.Pegasuses.OrderBy(e => e.Index).ToListAsync(); for (var i = 0; i < 50; i++) { Assert.Equal("Rainbow Dash " + i, pegasuses[i].Name); Assert.Equal(guids[i], pegasuses[i].Id); } } }
public async Task Can_use_explicit_values() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .BuildServiceProvider(); var guids = new List <Guid>(); using (var context = new BronieContext(serviceProvider, TestStore.Name)) { context.Database.EnsureCreated(); for (var i = 0; i < 50; i++) { guids.Add(context.Add(new Pegasus { Name = "Rainbow Dash " + i, Index = i, Id = Guid.NewGuid() }).Entity.Id); } await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, TestStore.Name)) { var pegasuses = await context.Pegasuses.OrderBy(e => e.Index).ToListAsync(); for (var i = 0; i < 50; i++) { Assert.Equal("Rainbow Dash " + i, pegasuses[i].Name); Assert.Equal(guids[i], pegasuses[i].Id); } } }
public async Task Can_use_generated_values_in_composite_key_end_to_end() { var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .BuildServiceProvider(); long id1; var id2 = DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture); Guid id3; using (var context = new BronieContext(serviceProvider, TestStore.Name)) { context.Database.EnsureCreated(); var added = context.Add(new Unicorn { Id2 = id2, Name = "Rarity" }).Entity; Assert.True(added.Id1 < 0); Assert.NotEqual(Guid.Empty, added.Id3); await context.SaveChangesAsync(); Assert.True(added.Id1 > 0); id1 = added.Id1; id3 = added.Id3; } using (var context = new BronieContext(serviceProvider, TestStore.Name)) { Assert.Equal(1, context.Unicorns.Count(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3)); } using (var context = new BronieContext(serviceProvider, TestStore.Name)) { var unicorn = context.Unicorns.Single(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3); unicorn.Name = "Bad Hair Day"; await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, TestStore.Name)) { var unicorn = context.Unicorns.Single(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3); Assert.Equal("Bad Hair Day", unicorn.Name); context.Unicorns.Remove(unicorn); await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, TestStore.Name)) { Assert.Equal(0, context.Unicorns.Count(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3)); } }
public async Task Can_use_generated_values_in_composite_key_end_to_end() { var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlServer() .ServiceCollection() .BuildServiceProvider(); long id1; var id2 = DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture); Guid id3; using (var context = new BronieContext(serviceProvider, "CompositeUnicorns")) { context.Database.EnsureCreated(); var added = context.Add(new Unicorn { Id2 = id2, Name = "Rarity" }).Entity; Assert.True(added.Id1 < 0); Assert.NotEqual(Guid.Empty, added.Id3); await context.SaveChangesAsync(); Assert.True(added.Id1 > 0); id1 = added.Id1; id3 = added.Id3; } using (var context = new BronieContext(serviceProvider, "CompositeUnicorns")) { Assert.Equal(1, context.Unicorns.Count(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3)); } using (var context = new BronieContext(serviceProvider, "CompositeUnicorns")) { var unicorn = context.Unicorns.Single(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3); unicorn.Name = "Bad Hair Day"; await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositeUnicorns")) { var unicorn = context.Unicorns.Single(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3); Assert.Equal("Bad Hair Day", unicorn.Name); context.Unicorns.Remove(unicorn); await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositeUnicorns")) { Assert.Equal(0, context.Unicorns.Count(e => e.Id1 == id1 && e.Id2 == id2 && e.Id3 == id3)); } }
private static async Task AddEntitiesAsync(IServiceProvider serviceProvider, string databaseName) { using (var context = new BronieContext(serviceProvider, databaseName)) { for (var i = 0; i < 10; i++) { context.Add(new Pegasus { Name = "Rainbow Dash " + i }); context.Add(new Pegasus { Name = "Fluttershy " + i }); } await context.SaveChangesAsync(); } }
public async Task Can_use_two_non_generated_integers_as_composite_key_end_to_end() { var serviceProvider = new ServiceCollection() .AddEntityFramework() .AddSqlServer() .ServiceCollection() .BuildServiceProvider(); var ticks = DateTime.UtcNow.Ticks; using (var context = new BronieContext(serviceProvider, "CompositePegasuses")) { context.Database.EnsureCreated(); context.Add(new Pegasus { Id1 = ticks, Id2 = ticks + 1, Name = "Rainbow Dash" }); await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositePegasuses")) { var pegasus = context.Pegasuses.Single(e => e.Id1 == ticks && e.Id2 == ticks + 1); pegasus.Name = "Rainbow Crash"; await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositePegasuses")) { var pegasus = context.Pegasuses.Single(e => e.Id1 == ticks && e.Id2 == ticks + 1); Assert.Equal("Rainbow Crash", pegasus.Name); context.Pegasuses.Remove(pegasus); await context.SaveChangesAsync(); } using (var context = new BronieContext(serviceProvider, "CompositePegasuses")) { Assert.Equal(0, context.Pegasuses.Count(e => e.Id1 == ticks && e.Id2 == ticks + 1)); } }
private static void AddEntitiesWithIds(IServiceProvider serviceProvider, int idOffset) { using (var context = new BronieContext(serviceProvider, "ExplicitBronies")) { for (var i = 1; i < 11; i++) { context.Add(new Pegasus { Name = "Rainbow Dash " + i, Identifier = i * 100 + idOffset }); context.Add(new Pegasus { Name = "Fluttershy " + i, Identifier = i * 100 + idOffset + 1 }); } context.SaveChanges(); } }