Entity Framework Core
A lightweight, extensible, open-source, and cross-platform version of the Entity Framework data access technology.
776 questions
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Hi,
How can I reload a set of entities in EF Core?
await _db.Entry(Orders).ReloadAsync();
I update data in 2 ways.
Here is the first one;
public async Task UpdateOrderDetailAsync(OrderDetail orderDetail)
{
var detail = await this._db.OrdersDetail.FindAsync(orderDetail.Id);
if (detail != null)
{
detail.Quantity = orderDetail.Quantity;
detail.CostRatio = orderDetail.CostRatio;
detail.Description = orderDetail.Description;
detail.ProductCode = orderDetail.ProductCode;
detail.ProductName = orderDetail.ProductName;
detail.BuyUnitPrice = orderDetail.BuyUnitPrice;
detail.ShippingNumber = orderDetail.ShippingNumber;
detail.Status = orderDetail.Status;
detail.TotalBuyPrice = orderDetail.BuyUnitPrice * orderDetail.Quantity;
detail.TotalSellPrice = orderDetail.Quantity * orderDetail.SellUnitPrice;
detail.SellUnitPrice = orderDetail.SellUnitPrice;
detail.UnitCost = (orderDetail.BuyUnitPrice * (orderDetail.CostRatio / 100)) + orderDetail.BuyUnitPrice;
detail.TotalUnitCost = orderDetail.UnitCost * orderDetail.Quantity;
detail.Currency = orderDetail.Currency;
detail.CustomerOrderNumber = orderDetail.CustomerOrderNumber;
detail.CustomerStockCode = orderDetail.CustomerStockCode;
detail.OrderId = orderDetail.OrderId;
detail.VendorId = orderDetail.VendorId;
detail.TrackingNumber = orderDetail.TrackingNumber;
detail.Warehouse = orderDetail.Warehouse;
detail.PaymentStatus = orderDetail.PaymentStatus;
if (detail.Status == "Completed")
{
detail.CompletionDateTime = DateTime.Now;
}
else
{
detail.CompletionDateTime = null;
}
await _db.SaveChangesAsync();
}
}
Here is the second one, I upload data with excel and update
public async Task UpdateReportAsync(List<OrderDetail> reports)
{
_db.UpdateRange(reports);
await _db.SaveChangesAsync();
}
The main problem is, If I use the first approach I can retrieve the updated data with this query:
public async Task<IEnumerable<Order?>> GetAllOrders(ClaimsPrincipal user)
{
if (user.IsInRole("Administrators"))
{
var result = await _db.Orders
.Include(d => d.OrderDetails.Where(od => od.IsActive == 1))
.ThenInclude(v => v.Vendor)
.Include(c => c.Customer)
.OrderByDescending(s => s.Id)
//.AsNoTracking()
.ToListAsync();
return result;
}
return await _db.Orders
.Where(u => u.DoneBy == user.Identity.Name)
.Include(d => d.OrderDetails.Where(od => od.IsActive == 1))
.ThenInclude(v => v.Vendor)
.Include(c => c.Customer)
.OrderByDescending(s => s.Id)
//.AsNoTracking()
.ToListAsync();
}
But if I upload excel and use the update range then updated data does not retrieve. How can I fix this? What is the problem?
Thank you.