EFCore: Добавление данных к существующим в поле

Мне нужно добавить строку, которую я получаю от клиента в сообщении к существующим данным в БД. Работаю напрямую, с помощью методов:

public Order getLastOrder(int UserID)
{
    Order lastOrder = null;
    using (ApplicationContext db = new ApplicationContext())
    {
        foreach (var item in db.Orders)
        {
            if ((item.Customer == UserID) && (item.States == OrderStates.OnChanging))
            {
                lastOrder = item;
                break;
            }
        }
    }
    if (lastOrder != null) return lastOrder;
    else
    {
        throw new Exception("No avialable orders with InChanging state for user: " + UserID);
    }
}

и

public void SaveOrder(Order order)
{
    using (ApplicationContext db = new ApplicationContext())
    {
        db.Orders.Attach(order);
        db.SaveChanges();
    }
}

Добавляю данные к текущей строке так:

_orderDataCollector = _ordersRepository.getLastOrder(message.UserId);
_orderDataCollector.Description = string.Format("{0}{1}", _orderDataCollector.Description, ("\n " + message.Text)); 
_ordersRepository.SaveOrder(_orderDataCollector);

Проблема в том, что при добавлении данных в Description, они не сохраняются. Я предполагаю, что проблема в методе SaveOrder(Order order);
Как это исправить?


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

Автор решения: Vlad

Судя по всему, EF Core не понимает, что сущность была изменена. Попробуйте вот так:

public void SaveOrder(Order order)
{
    using (ApplicationContext db = new ApplicationContext())
    {
        var entity = db.Orders.Attach(order);

        // помечаем сущность как измененную
        entity.State = EntityState.Modified;

        db.SaveChanges();
    }
}
→ Ссылка