EF6无法通过dbContext刷新Navigable或Collection属性

时间:2014-10-06 07:18:21

标签: entity-framework

我有一个并发错误处理程序,它执行从客户端到数据库的当前显式字段更新,然后从数据库重新加载记录以刷新客户端的所有其他更改。

当我刷新我的主要实体 - 公司时,这可以正常工作,但我不能对相关的Collection属性进行更新。

我正在使用更改跟踪,因此上下文始终从这些副本中提取。

有没有办法让数据库刷新集合属性?我找到的所有Load方法和排列都不会更新已加载的副本。

以下示例精简到1个收集属性。 此处,当refreshFromStore为true时,将从当前数据库值刷新Company Entity。注释掉的PhoneNumbers属性Load是无用的,不会从当前数据库值更新。

如何做到这一点?

由于

    public Company GetCompany(int CompanyId, bool refreshFromStore)
    {
        Company company = context.Companies
                .Include("PhoneNumbers")
                .Where(c => c.Id == CompanyId).FirstOrDefault();
        if (refreshFromStore)
        {
            context.Entry(company).Reload();
            //context.Entry(company).Collection<PhoneNumber>("PhoneNumbers").Load(); No good - doesn't write to tracked instances
        }

        return company;
    }