我有一个项目,我使用EFv4将数据保存回我的存储库。这对我的对象上的简单属性按预期工作,但对相关对象没有任何作用。
例如,我有一个User对象和一个相关属性Roles,它是Role实体的集合。
如果我在UI中更新用户的lastActivity日期和分配给用户的角色,然后将User对象发送回要更新的存储库,我可以在User对象中看到lastActivity和Roles的新值,但是当我打电话的时候:
this.ObjectContext.ApplyCurrentValues(entitySet.Name.ToString(), entity);
this.ObjectContext.SaveChanges();
只保存简单属性,如lastActivity日期,角色更改将被忽略。
我是否需要做一些特殊的更新所有引用的对象?
更新 我在网上搜索了一下,看到有人提到ApplyCurrentValues只影响标量属性。仍然没有改变我原来的问题,但它可以解释为什么相关实体没有更新。微软的文档没有提到我所能看到的内容。
答案 0 :(得分:2)
我使用MSFT进入此版本,它似乎按预期工作。以下是MSFT的引用:
ApplyCurrentValues仅适用于 单个标量属性 实体。你想要的是什么 完成将是最容易的 自我跟踪实体。希望如此 切换到使用这些实体 因为你不会太痛苦 可以只swpa代码生成 你正在使用的模板(来自 默认为自我跟踪 实体一)。你不必 彻底改变你的模型,和 希望你的改变 存储库很小。
我已将文档问题记录到 澄清ApplyCurrentValues的作用。 感谢您报告此事!