2012-02-20 4 views
1

Как настроить SetModifiedProperty для вложенного свойства? Другими словами, у меня есть автор сущности, чья сущность имеет коллекцию книг, мне нужно изменить только имя книги.SetModifiedProperty для вложенных свойств

var existingAuthor = authors.FirstOrDefault(x => x.Id.Equals(authorId)); 
    var bestSellerBook = existingAuthor.Books.FirstOrDefault(x=> x.Id.Equals(bookId)); 
    existingAuthor.Name = "xxxxxxx"; 
    bestSellerBook.Name = "xxxxxxxxxxx"; 
    context.Authors.Attach(existingAuthor); 
    context.ObjectStateManager.GetObjectStateEntry(existingAuthor).SetModifiedProperty("Name"); 
    context.SaveChanges(); 

Любое предложение?

+0

Вы, кажется, модифицируя книгу, так почему бы не отметить книгу как изменен так же, как и с автором? Неужели я не понимаю ваш вопрос? – hvd

ответ

0

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

var existingAuthor = authors.FirstOrDefault(x => x.Id.Equals(authorId)); 
var bestSellerBook = existingAuthor.Books.FirstOrDefault(x=> x.Id.Equals(bookId)); 
bestSellerBook.Name = "xxxxxxxxxxx"; 
context.Authors.Attach(existingAuthor); 
context.ObjectStateManager.GetObjectStateEntry(bestSellerBook).SetModifiedProperty("Name"); 
context.SaveChanges(); 
+1

Проблема в том, что я одновременно изменяю 2 объекта (автор и книга). – Jude

+0

@ JAPT88 Итак? Вы знаете, как пометить автора как измененный, и вы знаете, как пометить книгу как измененную. Чтобы пометить оба как измененные, сначала отметьте один, затем отметьте другой. – hvd

+0

Точно так же, как описано в @hvd - если вы изменяете несколько объектов или свойств (с каждой степенью детализации), вы должны установить состояние для каждого из них. –

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