[英]Entity Framework Core : instance of entity type cannot be tracked because another instance with same key value
[英]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.