代码之家  ›  专栏  ›  技术社区  ›  Jay

EntityFramework v4 ApplyCurrentValues未保存引用的属性更改

  •  1
  • Jay  · 技术社区  · 16 年前

    我有一个项目,我使用EFv4将数据保存回我的存储库。对于我的对象上的简单属性,这是正常工作的,但是对于相关的对象,这一点都不起作用。

    例如,我有一个用户对象和一个相关的属性角色,它是角色实体的集合。

    如果我更新用户的上一个活动日期和用户界面中分配给用户的角色,然后将用户对象发送回要更新的存储库,我可以在用户对象中看到上一个活动和角色的新值,但当我调用时:

    this.ObjectContext.ApplyCurrentValues(entitySet.Name.ToString(), entity);
    this.ObjectContext.SaveChanges();
    

    只有简单的属性像上次活动日期一样保存,角色更改将被忽略。

    我需要做一些特殊的事情来更新所有引用的对象吗?

    更新: 我在网上搜索了一会儿,发现有人提到applycurrentValues只影响标量属性。仍然没有改变我最初的问题,但它可以解释为什么相关实体没有被更新。据我所见,微软的文档没有提到这一点。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Jay    16 年前

    我和MSFT一起输入了这个,它看起来像是按预期工作。这是MSFT的报价:

    ApplyCurrentValues仅适用于 单个上的标量属性 实体。你想做什么 最容易做到的是 自我跟踪实体。希望 切换到使用这些实体 不会太痛苦因为你 只能SWPA哪种代码生成 您正在使用的模板(来自 默认为自动跟踪 实体一)。你不必 完全改变你的模式,并且 希望你的改变 存储库很小。

    我已将文档问题记录到 阐明ApplyCurrentValues的作用。 感谢您报告!

    这里是 referenced question :