Если вы работаете с присоединенными сущностями, EF будет генерировать обновления только для полей, которые изменились.Если вы работаете с отдельными объектами, вы должны вручную сказать EF, что изменилось.Если вы называете это:
context.Entry(yourEntity).State = EntityState.Modified;
, вы говорите EF, что все свойства должны быть изменены.Но если вы вместо этого вызовете это:
context.Entry(youreEntity).Property(e => e.SomeProperty).IsModified = true;
, вы скажете, что изменен только SomeProperty
(только это свойство будет обновляться).Я не уверен, что вы можете сделать обратную операцию, пометив всю сущность как измененную и выбрав свойства, которые не должны быть изменены, но вы можете проверить это сами.
Если ваш CreatedOn
заполнен в базе данныхВы можете пометить его как DatabaseGeneratedOption.Identity
, и оно никогда не будет изменено вашим приложением.