簡體   English   中英

實體框架6中不變的對象

[英]Unchanged objects in Entity Framework 6

我有Silverlight應用程序。 這是使用實體框架6的調用操作(在Open Ria Service-WCF Ria Service開源版本中)。

    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屬性設置為false。 currentAmounts對象entityEntry.State仍然不變 為什么? 是的,我可以將它們的狀態設置為“已修改” (就像我在方法中所做的那樣),但是我認為這不是一件好事。 您能告訴我為什么我的對象狀態沒有更改為Modified嗎?

如果您不使用更改跟蹤代理,則在調用DetectChanges或調用SaveChanges(調用DetectChanges)之前,EF無法知道您是否修改了屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM