簡體   English   中英

Entity Framework Core dbContext 拒絕更改后的行為

[英]Entity Framework Core dbContext behavior after rejecting changes

我有一個帶有實體框架的 C# .NET Core API 項目。 在其中一個 API 中,有一種特定情況,我需要中止我在數據庫上下文中所做的更改,然后將其他不同的數據保存在我的數據庫中。

我找到並編輯了一些代碼來做到這一點:

public void RejectChanges()
{
    var ChangeTracker = new Microsoft.EntityFrameworkCore.ChangeTracking.ChangeTracker(_context);
    foreach (var entry in ChangeTracker.Entries())
    {
        switch (entry.State)
        {
            case EntityState.Modified:
            case EntityState.Deleted:
                entry.State = EntityState.Modified; //Revert changes made to deleted entity.
                entry.State = EntityState.Unchanged;
                break;
            case EntityState.Added:
                entry.State = EntityState.Detached;
                break;
        }
    }
}

它似乎有效,但我有一個很大的疑問:如果另一個 API 要保存自己的數據,這個操作是否也會影響它的數據,是否也會拒絕這些更改? 或者,如我所願,它只影響調用此方法的 API session 嗎?

示例:API 1 在上下文中編輯一些數據,然后調用RejectChanges方法。 同時,API 2 編輯其他數據,准備保存。 從 API 1 調用的RejectChanges是否也拒絕 API 2 所做的編輯?

Change Tracker 的范圍限定為單個 DbContext,它應該限定為單個 API 請求。 此外,您不會創建新的 ChangeTracker。 DbContext 已經有一個。

var ChangeTracker = _context.ChangeTracker;

暫無
暫無

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

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