Исключить столбец из обновляемого в Entity Framework 4.1 Code First - PullRequest
8 голосов
/ 24 мая 2011

Кто-нибудь знает, можем ли мы исключить обновление столбца в Entity Framework 4.1 Code First? Например, у меня есть поле «CreatedOn», которое я не хочу включать при редактировании / обновлении. Возможно ли это, то есть выборочное исключение поля из операции обновления в EF Code First 4.1?

1 Ответ

15 голосов
/ 25 мая 2011

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

context.Entry(yourEntity).State = EntityState.Modified;

, вы говорите EF, что все свойства должны быть изменены.Но если вы вместо этого вызовете это:

context.Entry(youreEntity).Property(e => e.SomeProperty).IsModified = true;

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

Если ваш CreatedOn заполнен в базе данныхВы можете пометить его как DatabaseGeneratedOption.Identity, и оно никогда не будет изменено вашим приложением.

...