2014-09-30 5 views
0

실버 라이트 응용 프로그램이 있습니다. 이 (오픈 리아 서비스에서 - WCF 리아 서비스 오픈 소스 버전)을 호출 작업입니다 엔티티 프레임 워크는 6Entity Framework 6의 변경되지 않은 개체

public List<VaultAmount> GetCurrentVaultAmounts(Guid vaultId) 
    { 
     return this.DbContext.VaultAmounts 
      .Include(v => v.VaultAmountQuantities) 
      .Include(v => v.VaultCurrency) 
      .Include(v => v.Vault) 
      .Include(v => v.VaultAmountQuantities.Select(vaq => vaq.VaultCurrency)) 
      .Where(v => v.VaultId == vaultId && v.IsCurrent).ToList(); 
    } 

    [Invoke] 
    public void UpdateVaultRemainders(List<VaultAmountQuantity> updatedQuantities, string comment, Guid userId, 
     string friendlyName, 
     Guid vaultAmountId, int currencyId) 
    { 
     VaultAmount vaultAmount = 
      this.DbContext.VaultAmounts 
       .Include("Vault") 
       .SingleOrDefault(va => va.VaultAmountId == vaultAmountId); 

     if (vaultAmount == null && vaultAmount.Vault == null) return; 

     //Get FromVault and ToVault with amounts and updatedQuantities 
     List<VaultAmount> currentAmounts = GetCurrentVaultAmounts(vaultAmount.Vault.VaultId); 
     //Vault vault = GetVaultWithCurrentAmountsAndQuantitiesById(vaultAmount.Vault.VaultId); 

     var helper = new RemainderVAHelper(currentAmounts, userId, friendlyName, currencyId, updatedQuantities, 
      comment, 
      BS2VaultEventTypes.Correction); 

     //................................ 

     foreach (var amount in currentAmounts) 
     { 
      if (amount.IsCurrent == false) 
      { 
       DbEntityEntry<VaultAmount> entityEntry = this.DbContext.Entry(amount); 
       entityEntry.State = EntityState.Modified; 
      } 
     } 
     this.DbContext.SaveChanges(); 
    } 

RemainderVAHelper 클래스에서 내가 currentAmounts에게 오브젝트를 변경하고와, 대해 IsCurrent 속성을하는 설정 그릇된. 하지만 currentAmounts 개체 entityEntry.State은 여전히 ​​이고 변경되지 않은입니다. 왜? 예, 상태를 으로 설정할 수 있습니다 (메서드에서 수행함에 따라)으로 처리 할 수 ​​있지만 매우 좋지는 않습니다. 내 물건 상태가 으로 변경되지 않은 이유를 말해 줄 수 있습니까??

+0

이 객체 (DetectChanges를 호출하는) SaveChanges를 호출 할 때까지 당신이 속성을 수정 알 수있는 방법이 없다? – Whoami

답변

0

변경 추적 프록시 EF를 사용하지 않는 경우는 DetectChanges를 호출하거나 문맥에 "연결 상태"에

+0

사실, 그렇습니다. 줄을 추가했습니다 : var detect = DbContext.Configuration.AutoDetectChangesEnabled; 탐지는 거짓이었다. 고마워. 내 모든 도메인 서비스에 대해이 옵션을 true로 설정하는 방법은 무엇입니까? – Oblomingo

+0

기본 설정이 'true'이고 내가 EF 코드를 들여다 보았 기 때문에 흥미 롭습니다. EF는 'false'로 설정하지 않았습니다. – Pawel

관련 문제