title: EF6 setting default property disables change tracking
body: <p>Working with EF6 WebApi on .NET 4.7 and hitting an issue when trying to save a model update when we're setting a default value. I'm using the below pattern to save a JSON property in EF6, and it's worked well for a number of classes:</p>
  <pre><code>public class User 
  {
  ...
      public int AddressId { get; set; }
      public string AddressName { get; set; }
      // New fields for mapping 1-N Address
      [NotMapped]
      public List&lt;Address&gt; Addresses
      {
          get { return JsonConvert.DeserializeObject&lt;List&lt;Address&gt;&gt;(AddressesJson ?? string.Empty); }
          set { AddressesJson = JsonConvert.SerializeObject(value); }
      }
      [MaxLength(5000), JsonIgnore]
      public string AddressesJson { get; set; }
  ...
  }
  
  public class Address
  {
      public string Id { get; set; }
      public string Name { get; set; }
  }
  </code></pre>
  <p>The issue arises when we try to set a default value. We want to migrate the existing Address on the User object if the <code>Addresses == null</code>. So we tried the below:</p>
  <pre><code>public class User 
  {
  ...
      [NotMapped]
      public List&lt;Address&gt; Addresses
      {
          get { return AddressesJson == null ? AddressesDefault : JsonConvert.DeserializeObject&lt;List&lt;Address&gt;&gt;(AddressesJson ?? string.Empty); }
          set { AddressesJson = JsonConvert.SerializeObject(value); }
      }
      [MaxLength(5000), JsonIgnore]
      public string AddressesJson { get; set; }
      [NotMapped]
      internal List&lt;Address&gt; AddressesDefault {
          get 
          {
              var defaultAddress = new List&lt;Address&gt;();
              defaultAddress.Add(new Address() { Id = AddressId, Name = AddressName });
              return defaultAddress;
          }
      }
  
  ...
  }
  </code></pre>
  <p>I would have assumed that if the <code>AddressesJson</code> backing field was null, I would return a new object that is populated with some default values, which is working. But when I do a HTTP PUT to update the <code>Addresses</code> field (and hence the <code>AddressesJson</code> backing field), it's not being set and is always returning <code>AddressesDefault</code>.</p>
  <p>What am I missing? Any suggestions? Many thanks!</p>