MergeOption.NoTracking, Detached. . , EntityState - . , , : .
SaveChanges.
, ApplyCurrentValues:
EntityKey . .
, , , ReviewNote , EF :
ctx.Reviews.Attach(review);
foreach (ReviewNote item in review.ReviewNotes) {
if (item.ReviewNoteID == 0) {
ctx.ObjectStateManager.ChangeObjectState(item, EntityState.Added);
}
else {
key = ctx.CreateEntityKey("ReviewNotes", item);
if (ctx.TryGetObjectByKey(key, out original)) {
ctx.ObjectStateManager.ChangeObjectState(item, EntityState.Modified);
}
}
}
ctx.ObjectStateManager.ChangeObjectState(review, EntityState.Modified);
ctx.SaveChanges();
EDIT:
, ReviewNote , ApplyCurrentValues , , , "":
Review review2 = (from r in ctx.Reviews.Include("ReviewNotes")
where r.ReviewID == reviewID
select r).First();
foreach (ReviewNote item in review.ReviewNotes) {
if (item.ReviewNoteID == 0) {
ctx.ReviewNotes.AddObject(item);
}
else {
key = ctx.CreateEntityKey("ReviewNotes", item);
if (ctx.TryGetObjectByKey(key, out original)) {
ctx.ApplyCurrentValues(key.EntitySetName, item);
}
}
}
ctx.ObjectStateManager.ChangeObjectState(review, EntityState.Modified);
ctx.SaveChanges();
, ApplyCurrentValues , Review, , .