public void Calling_DetectChanges_with_nested_complex_property_null_after_Attach_with_change_to_another_property_should_not_throw() { using (var context = new Context36323()) { var entry = context.Entry(new Model36323 { Id = 14, Contact = new ContactInfo36323 { First = "Name", HomePhone = new Phone36323 { Number = "12345" } } }); entry.State = EntityState.Unchanged; entry.Entity.Contact.WorkPhone = new Phone36323 { Number = "1234" }; context.ChangeTracker.DetectChanges(); Assert.NotNull(entry.Property(m => m.Contact).OriginalValue); Assert.NotNull(entry.Property(m => m.Contact).CurrentValue); Assert.NotNull(entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).OriginalValue); Assert.NotNull(entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).CurrentValue); Assert.Equal("12345", entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).OriginalValue.Number); Assert.Equal("12345", entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).CurrentValue.Number); Assert.Null(entry.ComplexProperty(m => m.Contact).Property(c => c.WorkPhone).OriginalValue); Assert.NotNull(entry.ComplexProperty(m => m.Contact).Property(c => c.WorkPhone).CurrentValue); Assert.Equal("1234", entry.ComplexProperty(m => m.Contact).Property(c => c.WorkPhone).CurrentValue.Number); } }
public void Calling_DetectChanges_with_nested_complex_property_null_after_Attach_with_change_to_another_property_should_not_throw() { using (var context = new Context36323()) { var entry = context.Entry( new Model36323 { Id = 14, Contact = new ContactInfo36323 { First = "Name", HomePhone = new Phone36323 { Number = "12345" } } }); entry.State = EntityState.Unchanged; entry.Entity.Contact.WorkPhone = new Phone36323 { Number = "1234" }; context.ChangeTracker.DetectChanges(); Assert.NotNull(entry.Property(m => m.Contact).OriginalValue); Assert.NotNull(entry.Property(m => m.Contact).CurrentValue); Assert.NotNull(entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).OriginalValue); Assert.NotNull(entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).CurrentValue); Assert.Equal( "12345", entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).OriginalValue.Number); Assert.Equal( "12345", entry.ComplexProperty(m => m.Contact).Property(c => c.HomePhone).CurrentValue.Number); Assert.Null(entry.ComplexProperty(m => m.Contact).Property(c => c.WorkPhone).OriginalValue); Assert.NotNull(entry.ComplexProperty(m => m.Contact).Property(c => c.WorkPhone).CurrentValue); Assert.Equal( "1234", entry.ComplexProperty(m => m.Contact).Property(c => c.WorkPhone).CurrentValue.Number); } }