簡體   English   中英

Entity framework core 無法跟蹤實體類型的實例,因為另一個實例具有相同的鍵值

[英]Entity framework core The instance of entity type cannot be tracked because another instance with the same key value

我有一種更新因子的方法,但是當我執行方法時它不起作用。

這是錯誤:

異常{“無法跟蹤實體類型'BorrowToolFactor'的實例,因為已經在跟蹤具有與{'BorrowToolFactorId'}相同鍵值的另一個實例。附加現有實體時,請確保只有一個具有給定鍵值的實體實例附加。考慮使用“DbContextOptionsBuilder.EnableSensitiveDataLogging”來查看沖突的鍵值。”} System.Exception {System.InvalidOperationException}

public static long Save(BorrowToolFactor borrowToolFactor, List<BorrowTool> borrowTools)
    {
        CheckQueryResult.ResultError = string.Empty;

        long _result = 0;

        using (var context = new StoreManagerContext())
        {
            try
            {
                    _result = orginalBorrowToolFactor.BorrowToolFactorId;
                 
                    context.Entry(orginalBorrowToolFactor).CurrentValues.SetValues(borrowToolFactor);

                    #region DeleteOriginalBorrowTool

                    var originalBorrowTool = context.BorrowTools.Where(_borrow => _borrow.BorrowToolFactorId == _result).ToList();

                    context.BorrowTools.RemoveRange(originalBorrowTool);

                    #endregion DeleteOriginalBorrowTool

                    #region AddNewBorrowTools

                    borrowTools.ForEach(_borrow => _borrow.BorrowToolFactorId = _result);

                    context.BorrowTools.AddRange(borrowTools);

                    #endregion AddNewBorrowTools

                }
                context.SaveChanges();
            }
            catch (Exception exception)
            {
                _result = 0;
                CheckQueryResult.ResultError = "Error: " + exception.Message;
            }
            return _result;
        }
    }

此行發生錯誤: context.BorrowTools.AddRange(borrowTools);

我對另一個工作正常的表使用相同的方法,但這種方法不起作用。

我使用此代碼而不是context.BorrowTools.AddRange(borrowTools); 它奏效了。 我不知道為什么context.BorrowTools.AddRange(borrowTools); 沒用。

borrowTools.ForEach(_borrow => {
                        context.Entry(_borrow).State = Microsoft.EntityFrameworkCore.EntityState.Added;
                    });

暫無
暫無

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

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