2012-02-20 12 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とまったく同じです。複数のエンティティまたはプロパティを(プロパティ単位ごとに)変更する場合は、それぞれの状態を設定する必要があります。 –

関連する問題