Будет ли DbContext.SaveChanges включать изменения в новый объект с момента его добавления?

#entity-framework

#entity-framework

Вопрос:

 var newRock = new Rock();
context.Rocks.Add(newRock);
newRock.Hard = True;
newRock.Shiny = False;
newRock.CodeName = "Projectile";
context.SaveChanges();
  

В приведенном выше сценарии, как только я вызываю SaveChanges(), будут ли сохранены изменения, внесенные в объект после его добавления (жесткий, блестящий, кодовое имя)? Или мне нужно будет снова получить объект из базы данных, чтобы иметь действительно подключенный объект?

Я знаю, что всегда мог просто установить свойства для нового объекта, прежде чем добавлять его. Но выполнение этого таким образом сократило бы количество дублирующегося кода, который мне нужно было бы написать.

Комментарии:

1. Да, это сохранит их.

2. Нет разницы между «прикрепленным» и «действительно прикрепленным» 🙂 Add присоединяет объект, помечает его как Added и начинает отслеживать его изменения.

3. Спасибо. У меня был опыт работы с другими БД / ORM, где вам приходилось присоединять свой объект к БД и фиксировать это изменение до отслеживания любых других изменений в объекте, и я не смог найти документацию для EF, в которой так или иначе указано.