我的应用程序的目的是根据标准检索记录。
问题是可能有数百万条记录,但我只想选择最近1分钟内更新过的记录。
我第一次选择所有记录但是一分钟之后我无法再次选择所有记录,因为这需要很长时间。我只想选择在该时间间隔内更新的订单。
var records = context.Orders.Where(x => x.Category == "GAMING");
我能做些什么吗?订阅某种数据库事件?
答案 0 :(得分:1)
执行此操作的最有效方法是包含一个包含时间戳(ex.DateInserted)的日期时间列,并根据其值进行过滤:
var minuteAgo = DateTime.Now.AddMinutes(-1);
var recordsThisMinute = context.Orders.Where(x => x.DateInserted >= minuteAgo && x.Category == "GAMING");
但是,如果您希望产生相同的结果,而不触及表格,则可以尝试以下方法:
//Assuming oldRecords is the variable in which
//you're storing the records you selected a minute ago
var recordsThisMinute = context.Orders.Where(x => x.Category == "GAMING").Except(oldRecords);
答案 1 :(得分:0)
也许你可以使用idOrder的静态字典,在DbContext中的日期时间,在SaveChanges方法的重载中管理。
public static IEnumarable<Order> GetLastUpdatedOrder()
{
//Return dictionnay here
}
public override int SaveChanges()
{
var updatedOrder = ChangeTracker.Entries<Order>().Where(o => o.State == EntityState.Modified).ToList();
//Manage here Your dictionnary
var i = base.SaveChanges();
return i;
}