为什么我的实体不会返回更新的值?

时间:2012-06-25 16:34:00

标签: sql-server entity-framework ef-code-first

我在EF Code First中定义了一个Customer实体,其中包含AccountNumber属性。我可以使用他们的AccountNumber获取并更新单个客户而不会出现问题。但是,当我获得所有客户时,AccountNumber已经过了一段时间,然后在更改后最终更新。数据库始终返回正确的AccountNumber值。

我已经对SQLServer进行了分析,发现获取所有客户的调用确实进入了数据库并且它返回了最新的值,但是来自DbContext的响应给出了一个旧的AccountNumber。所以似乎EFCF正在缓存我的数据。

请帮忙。

更新:代码示例 -

        public IQueryable<Customer> GetCustomers()
    {
        return this.acmeDbContext.Customer
            .Include(x => x.IpAddressRange)
            ;
    }

    public Customer GetCustomer(Guid id)
    {
        var Customer = this.acmeDbContext.Customer
            .Include(x => x.Contacts)
            .Include(x => x.IpAddressRange)
            .OrderByDescending(x => x.Id)
            .FirstOrDefault(x => x.CustomerId == id);
        return Customer;
    }
    public void SaveCustomer(Customer Customer)
    {
        this.acmeDbContext.SaveChanges();
    }

1 个答案:

答案 0 :(得分:0)

我最终使用Reload方法重新加载每个客户:

        if (noCache)
            customers.ToList().ForEach(x => acmeDbContext.Entry(x).Reload());