将C#对象数组与数据库表同步

本文关键字:数据库 同步 数组 对象 | 更新日期: 2023-09-27 18:19:53

我正在编写一个Scheduling应用程序,数据库表中的每一行都是一个不同的任务,要在特定时间运行。在我的应用程序中,我提取这些信息,并将每个任务存储在一个单独的对象中,并将它们存储在列表中。

到目前为止,当我运行我的函数来刷新它时,没有检查,它只是再次添加它们。我需要找出最好的方法来查看特定作业的对象是否已经存在,如果没有,只为它创建一个新的对象。

最好的方法是检查行的ID,然后搜索每个当前任务对象,看看它是否存在吗?我主要担心的是,我不知道"自动增量ID"值是否会替换缺失的值。与中一样,如果我有ID为1,2,3,4,5的行,并且在某个时候ID为3的行被删除,那么添加的下一行是3还是6?

将C#对象数组与数据库表同步

您可以将对象存储在Dictionary中,其中Key是int,Value是对象的类型(例如Task)。然后,您可以使用以下键从字典中提取任务:

Dictionary<int, Task> dict = new Dictionary<int, Task>();
// Code to do first-time initialise of the dictionary
....
// Subsequent refresh
Task task;
if (!dict.TryGet(id, out task))
{
    task = new Task();
    task.Id = id;
    ...
    dict.Add(id, task);
}

至于id的自动递增,RDBMS很可能将新行的值设置为最后分配的值+1。

通常,自动递增的ID会增加,但永远不会重新创建(数据库总是+1,但不会返回查看旧ID是否已释放)。您应该通过查看SQL server文档来确认这一点,或者通过测试来确定。

您最好的选择是检查您的收藏中是否有该对象。我会按照您所说的做,并确保在添加值之前,集合中不存在ID值。