Ответ 1
Да, это правильно. В этой статье описываются различные способы добавления и присоединения объектов, и в этом примере приведен пример:
var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" };
using (var context = new BloggingContext())
{
// The next step implicitly attaches the entity
context.Entry(existingBlog).State = EntityState.Modified;
// Do some more work...
context.SaveChanges();
}
Так как EF не знает, какие свойства отличаются от свойств в базе данных, он обновит их все:
При изменении состояния на Модифицированное все свойства объекта будут помечены как измененные, и все значения свойств будут отправлены в базу данных при вызове SaveChanges.
Чтобы избежать этого, вы можете установить, какие свойства изменены вручную, а не устанавливать полное состояние объекта:
using (var context = new BloggingContext())
{
var blog = context.Blogs.Find(1);
context.Entry(blog).Property(u => u.Name).IsModified = true;
// Use a string for the property name
context.Entry(blog).Property("Name").IsModified = true;
}