【问题标题】:How do I reload a model in Entity Framework 7?如何在 Entity Framework 7 中重新加载模型?
【发布时间】:2016-01-12 17:45:13
【问题描述】:

我读到在实体框架的早期版本中,您可以访问 Reload() 方法,如下所示:Db.Entry<DatabaseModels.User>(_me).Reload();

我收到一条错误消息,即 EntityEntry 不包含“重新加载”的定义。

我什至想重新加载的原因是缓存(或者我认为是缓存,而 EF 可能不知道何时使缓存无效)。

例子:

加载用户A。
创建用户 A 将拥有的项目。
尝试通过用户关系访问该新项目。 userA.Items 返回空
从数据库中重新获取userA,并调用关系,新创建的项目在关联中。

不确定为什么会发生这种情况,或者是否有办法让 EF 了解缓存失效问题。

【问题讨论】:

  • 您不能直接将项目添加到 userA 吗? Item myItem = new Item(...); userA.Items.Add(myItem); context.SaveChanges();另外你确定你没有禁用代理创建?
  • 我怎么知道我是否禁用了代理创建?
  • context.Configuration.ProxyCreationEnabled 必须为真
  • EF7 在上下文中似乎没有配置属性
  • 好吧,如果你不碰它也很好,反正它是默认启用的 :)

标签: c# entity-framework caching entity-framework-core


【解决方案1】:

不支持,但您可以通过代码检查元数据来实现。请参阅此处的示例:https://weblogs.asp.net/ricardoperes/implementing-missing-features-in-entity-framework-core

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2016-07-29
    • 2016-08-21
    • 2013-06-25
    • 1970-01-01
    • 2015-11-07
    • 2014-11-07
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多