1

我有一段代码无法正常工作:

StoreDataHandler dataHandler = new StoreDataHandler(HttpContext.Request["data"]);
ChangeRecords<ChequeDiary> data = dataHandler.ObjectData<ChequeDiary>();

foreach (ChequeDiary item in data.Updated) {
    db.ChequeDiaries.Attach(item);
    db.Refresh(System.Data.Objects.RefreshMode.ClientWins, item);
}

这是为了获取更改并更新底层对象,但是当我调用

db.SaveChanges();

..没有更新。如果我使用:

foreach (ChequeDiary item in data.Updated) {
    ChequeDiary obj = db.ChequeDiaries.FirstOrDefault(o => o.Id == item.Id);
    obj.BankedAmount = item.BankedAmount;
}

并明确设置每个属性,它的工作原理。为什么?!

4

1 回答 1

1

您的第一个示例可能没有将任何属性标记为已修改。检查ObjectStateManager以确认这一点。通常,您必须在附加对象后修改属性。

于 2011-02-14T13:41:55.320 回答