Ошибка при попытке сохранить сущность EntityFramework

Делаю приложение на C# + WindowsForms .NET Framework 4.8 . Использую при этом EntityFramework и PostgreSQL. Вот код:

public partial class TransactionForm : Form
{
    private FinancialSystem _financialSystem;
    private ApplicationDbContext _context;

    public TransactionForm(FinancialSystem financialSystem)
    {
        InitializeComponent();
        _context = new ApplicationDbContext();
        InitData();
        _financialSystem = financialSystem;
    }

    private void saveBtn_Click(object sender, EventArgs e)
    {
        var date = datePicker.Value;
        var amount = Convert.ToDecimal(amountBox.Text);
        var contragent = contrAgentBox.Text;
        var type = (TransactionType)typeBox.SelectedItem;
        var category = (Category)categoryBox.SelectedItem;

        var transaction = new Transaction
        {
            Date = date,
            Amount = amount,
            Contragent = contragent,
            Type = type,
            CategoryId = category.Id,
            FinancialSystem = _financialSystem
        };

        _context.Transactions.Add(transaction);
        _context.SaveChanges();
        _context.Dispose();

        Close();
    }

    private void InitData()
    {
        var categories = _context.Categories.ToList();
        categoryBox.DataSource = categories;
        typeBox.DataSource = Enum.GetValues(typeof(TransactionType));
    }
}

При попытке сохранить транзакцию

_context.Transactions.Add(transaction)

вылазит вот такая ошибка:

System.InvalidOperationException: "The instance of entity type 'Category' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.Enable Sensitive Data Logging' to see the conflicting key values."

С чем это связано? Я вроде бы один контекст использую во всем коде, так же пытался передавать лишь ID, все равно эта ошибка.


Ответы (0 шт):