2014-12-29 5 views
-1

Я использую EF с asp.net mvc5. Я хочу свойство, которое изменяется в процессе обновления/редактирования. Я могу получить его с помощью context.Entry(blog).Property("Name").IsModified = true;, но для этого мне нужно проверить каждое свойство для этого объекта. Есть ли способ получить прямое имя свойства и обновленное значение?Как проверить, какое свойство объекта было изменено до SaveChanges?

+1

Могу ли я спросить, почему вам это нужно? – Andrey

+0

Я хочу, чтобы он сделал частичную фиксацию в solr. Сейчас нам нужно индексировать полный объект. Чтобы уменьшить усилия по индексированию снова и снова, полный объект. –

+0

Интересная идея. Но действительно ли это такая проблема? У нас очень похожий случай, и мы просто индексируем всю запись снова каждый раз и не испытываем никаких проблем. – Andrey

ответ

1

Чтобы получить имена свойств, которые изменились:

var entry = context.Entry(myEntity); 
var changedProperties = entry.CurrentValues.PropertyNames 
    .Where(p => entry.Property(p).IsModified); 
+0

Благодарим вас за ответ. Но это дает мне все свойства, которые не только обновляются! Мне нужно только обновить. –

+0

С предложением Where (последняя строка) оно должно возвращать только обновленные значения. Вы включили последнюю строку? –

+0

Да, он должен возвращать обновленные значения, но не давать обновленное значение. Он возвращает все имущество. –

Смежные вопросы