Синхронизировать массив объектов C # с таблицей базы данных - PullRequest
0 голосов
/ 11 января 2012

Я пишу приложение «Планирование», и каждая строка в моей таблице базы данных - это отдельная задача , запускаемая в определенное время.В моем приложении я извлекаю эту информацию и сохраняю каждую задачу в отдельном объекте и сохраняю их в виде списка.

По состоянию на данный момент, когда я запускаю свою функцию для обновленияэто, нет никаких проверок, и он просто добавляет их все снова.Мне нужно выяснить, как лучше всего проверить, существует ли объект для конкретной работы, и создать для него новый объект, только если его нет.

Лучшим способом сделать это является проверкаидентификатор строки, а затем выполнить поиск в каждой текущей задачи объекта, чтобы увидеть, существует ли он?Моя главная проблема в том, что я не знаю, заменяют ли пропущенные значения идентификатора автоинкремента.Например, если у меня есть строки с идентификатором 1,2,3,4,5 и в какой-то момент строка с идентификатором 3 будет удалена, будет ли добавлена ​​следующая строка 3 или 6?

Ответы [ 2 ]

0 голосов
/ 11 января 2012

Вы можете хранить объекты в Словаре, где 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);
}

Что касается автоматического увеличения идентификаторов, вполне вероятно, что СУБД устанавливает значение для новых строк как последнее назначенное значение + 1.

0 голосов
/ 11 января 2012

Обычно автоматически увеличивающиеся идентификаторы увеличиваются, но никогда не воссоздаются (база данных всегда будет +1, но не вернется и не увидит, освободились ли старые идентификаторы).Вы должны подтвердить это, просмотрев документацию по SQL-серверу или удостоверившись в этом.

Лучше всего проверить коллекцию на предмет предмета.Я бы сделал, как вы заявили, и перед добавлением этого значения убедитесь, что значение ID отсутствует в коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...