Ошибка при попытке сохранить сущность 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, все равно эта ошибка.