C# 跟踪长时间重复操作
在我的代码中,我需要对许多不同的邮政编码执行一个操作,每个操作可能需要几秒钟,并且可能包括需要处理的数千个邮政编码。我需要能够保持跟踪,并重新启动它,如果它是出于任何原因终止 我的想法是创建一个搜索实体,如下所示:C# 跟踪长时间重复操作,c#,entity-framework,C#,Entity Framework,在我的代码中,我需要对许多不同的邮政编码执行一个操作,每个操作可能需要几秒钟,并且可能包括需要处理的数千个邮政编码。我需要能够保持跟踪,并重新启动它,如果它是出于任何原因终止 我的想法是创建一个搜索实体,如下所示: public class Search { public int ID { get; set; } public virtual ICollection<PostCode> PostCodes { get; set; } } public class Po
public class Search
{
public int ID { get; set; }
public virtual ICollection<PostCode> PostCodes { get; set; }
}
public class PostCode
{
public int ID { get; set; }
public string Value { get; set; }
}
我明白这是因为我无法更改我正在枚举的对象,但出于某种原因,我想不出一种简单的非复杂方法来跟踪数据库中的搜索。此外,由于有上千个邮政编码,我在这里也关注性能
有人能建议我应该如何跟踪搜索吗
*编辑*
所以,如果我跟踪completed
属性中处理的数字,这会正常工作吗
using (var db = new MyDbContext())
{
foreach (var pc in search.PostCodes.Skip(search.Completed))
{
DoSomeStuff(pc);
search.Completed ++;
db.SaveChanges();
}
}
如果使用实体框架保存并加载实体,它是否总是保持IEnumberale的顺序相同
**另一次编辑**
这是我在实际代码中加载搜索对象的地方:
rs = db.RadarSearches.Include("PostCodes").FirstOrDefault(x => x.Keyword.Value == keyword && x.Complete == false);
我想如果我在这里强制执行命令,那么我可以使它保持一致。如何订购嵌套的邮政编码集合
将结果存储为数组并将该数组存储在文件中,以便可以继续(假设搜索结果可能在不同时间有所不同)。使用该文件,您需要将索引保存在您所在的位置。在进程恢复时,从文件和最后一个成功处理的索引加载数组
您可以存储整个对象并删除成功处理的对象,但出于性能考虑,您只需每隔5或10次保存一次文件
我需要将进度存储在数据库中。如果我保存对象并通过实体框架加载它,我是否可以保证IEnumberable的顺序相同?您可以在每次启动流程之前通过排序(如果允许)来确保。
rs = db.RadarSearches.Include("PostCodes").FirstOrDefault(x => x.Keyword.Value == keyword && x.Complete == false);