簡體   English   中英

"使用 AsNoTracking() 獲取“無法跟蹤實體類型的實例,因為已經在跟蹤具有相同鍵值的另一個實例”"

[英]Getting 'The instance of entity type cannot be tracked because another instance with same key value for is already being tracked' with AsNoTracking()

我正在使用 Entity Framework Core 創建我的 Telegram 機器人。 我有這些模型:

public class User
{
    public int Id { get; set; }
    public long UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string UserName { get; set; }
    public ICollection<Chat> Chats { get; set;} = new List<Chat>();
    public ICollection<Team> CreatedTeams { get; set; } = new List<Team>();
    public ICollection<Team> Teams { get; set; } = new List<Team>();
}

public class Team
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ChatId { get; set; }
    public Chat Chat { get; set; }
    public int? CreatorId { get; set; }
    public User Creator { get; set; }
    public ICollection<User> Users { get; set; } = new List<User>();
}

您似乎沒有完全理解AsNoTracking<\/code>的作用:它明確地將實體與數據庫斷開連接。 因此,如果您想Update<\/code>該實體,則不應首先斷開它。

它是一個關系數據庫。 如果要將現有user<\/code>添加到team<\/code> ,則需要跟蹤現有對象。 否則數據庫將嘗試創建一個具有完全相同<\/em>值的新數據庫,並且會發生沖突。

旁注:你為什么使用Include<\/code> ,而不是延遲加載? 我們在我的公司運行幾個大型應用程序,幾乎不必使用Include<\/code> 。

暫無
暫無

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

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