2012-06-25 49 views
0

我在EF Code First中使用AccountNumber屬性定義了一個Customer實體。我可以在沒有問題的情況下使用他們的AccountNumber獲取並更新單個客戶。但是,當我獲得所有客戶時,AccountNumber已經有一段時間了,然後在更改後最終更新。數據庫始終返回正確的AccountNumber值。爲什麼我的實體不會返回更新值?

我已經成型的SQLServer,發現電話讓所有的客戶確實使它的數據庫,並將其返回的最新值,但是從的DbContext的響應給出了一箇舊的賬戶號碼。所以看起來EFCF正在緩存我的數據。

請幫忙。

UPDATE:代碼示例 -

 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(); 
    } 
+0

請張貼即節約您的代碼/更新賬戶號碼以及代碼,其中你正在讀取該值,但它不是最新的。 – kingdango

+1

是EF緩存數據。您必須顯式覆蓋緩存,Google for RefreshMode.StoreWins。由於沒有代碼,因此很難判斷在哪裏應用此代碼。 –

回答

0

我結束了使用Reload方法來重新加載每個客戶:

 if (noCache) 
      customers.ToList().ForEach(x => acmeDbContext.Entry(x).Reload()); 
相關問題