public void CanBinarySerializeNorthwindDatabase( ) { var serializer = new Binary.BinaryDbContextSerializer( ); using var serverContext = fixture.CreateDbContext( ); var orders = serverContext.Customers .Include(customer => customer.Orders) .ThenInclude(order => order.OrderDetails) .ThenInclude(orderDetail => orderDetail.Product) .ToList( ); var employees = serverContext.Employees.ToList( ); serverContext.Serialize(serializer, out var serializedContext); Assert.Equal(104660, serializedContext.Length); using var clientContext = fixture.CreateDisconnectedDbContext( ); var deserialized = clientContext.Deserialize(serializer, serializedContext); Assert.Equal(serverContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), clientContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), EntityEntryComparer.Instance); }
public void CanCompleteBinaryServerClientWorkflow( ) { var serializer = new Binary.BinaryDbContextSerializer( ); using var fixture = new Fixture( ); using var serverContext = fixture.CreateDbContext( ); var customer = serverContext.Customers.Include(c => c.Orders).First( ); serverContext.SerializeGraph(serializer, out var graph, customer); using var clientContext = fixture.CreateDisconnectedDbContext( ); clientContext.Deserialize(serializer, graph); Assert.Equal(serverContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), clientContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), EntityEntryComparer.Instance); customer = clientContext.Find <Customer> (customer.CustomerID); customer.ContactName = "Would prefer not to be contacted"; customer.Orders.RemoveAt(3); clientContext.Remove(customer.Orders [3]); var newCustomer = new Customer { CustomerID = "NOPE", Country = "Canada", Orders = new List <Order> { new Order { OrderDate = DateTime.UtcNow } } }; clientContext.Customers.Add(newCustomer); clientContext.SerializeChanges(serializer, out var changes); serverContext.Deserialize(serializer, changes); Assert.Equal(serverContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), clientContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), EntityEntryComparer.Instance); serverContext.SaveChanges(serializer, out var databaseGeneratedValues); clientContext.AcceptChanges(serializer, databaseGeneratedValues); Assert.All(serverContext.ChangeTracker.Entries( ), entry => Assert.True(entry.State == EntityState.Unchanged)); Assert.All(clientContext.ChangeTracker.Entries( ), entry => Assert.True(entry.State == EntityState.Unchanged)); Assert.Equal(serverContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), clientContext.ChangeTracker.Entries( ).OrderBy(entry => entry, EntityEntryComparer.Instance), EntityEntryComparer.Instance); }