【发布时间】:2010-10-28 00:05:41
【问题描述】:
我有一个实体,我检索如下并与上下文分离:
ctx.Reviews.MergeOption = MergeOption.NoTracking;
Review review = (from r in ctx.Reviews.Include("ReviewNotes")
where r.ReviewID == reviewID
select r).First();
然后我对关系中的一个对象进行更改:
if (review.ReviewNotes.Count > 0)
{
ReviewNote r = review.ReviewNotes.ElementAt(0);
r.Note = "Ugg " + DateTimeOffset.Now.ToString();
r.CreatedDate = DateTimeOffset.Now;
}
然后我附加对象并循环子对象并在需要时更改它的实体状态。保存更改完成后,不会更新任何内容。:
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.ApplyCurrentValues<ReviewNote>(key.EntitySetName, item);
}
}
}
ctx.ObjectStateManager.ChangeObjectState(review, EntityState.Modified);
ctx.SaveChanges();
【问题讨论】: