Код:
ExampleEntity exampleEntity = dbcontext.ExampleEntities.Attach(new ExampleEntity { Id = 1 });
exampleEntity.ExampleProperty = "abc";
dbcontext.Entry<ExampleEntity>(exampleEntity).Property(ee => ee.ExampleProperty).IsModified = true;
dbcontext.Configuration.ValidateOnSaveEnabled = false;
dbcontext.SaveChanges();
Результат TSQL:
exec sp_executesql N'UPDATE [dbo].[ExampleEntities]
SET [ExampleProperty ] = @0
WHERE ([Id] = @1)
',N'@0 nvarchar(32),@1 bigint',@0='abc',@1=1
Примечание:
Строка IsModified = true необходима. когда вы создаете новый объект ExampleEntity (только с заполненным свойством Id), все остальные свойства имеют свои значения по умолчанию (0, null и т. д.). Если вы хотите обновить БД «значением по умолчанию», изменение не будет обнаружено каркасом сущности, а затем DB не будет обновляться.
В примере:
exampleEntity.ExampleProperty = null;
не будет работать без строки «IsModified = true», поскольку свойство ExampleProperty уже имеет значение null, когда вы создали пустой объект ExampleEntity, вам нужно сказать EF, что этот столбец должен быть обновлен, и это является целью этого линия.