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();
}
}