PetaPoco / NPoco - сохранение объекта с (дочерним) свойством коллекции

Я использую NPoco с SQL Server и имею родительский объект, который содержит свойство коллекции. Все это отлично загружается с использованием FetchOneToMany.

Я хочу сохранить родительский объект и дочернюю коллекцию. Передача родительского элемента в Update () или Insert () не изменяет базу данных для дочерней коллекции. Должен ли я вручную перебирать дочернюю коллекцию и удалять / вставлять / обновлять каждый элемент по мере необходимости?

Я не против сделать это вручную; У меня есть код внутри транзакции, но он удаляет все объекты в коллекции и повторно добавляет новые, что кажется немного хитроумным.

Итак, мне действительно нужно спросить, есть ли лучший способ, который я мог упустить.

Спасибо.


person markau    schedule 15.02.2016    source источник


Ответы (1)


Да, это нужно делать вручную.

Чтобы избежать удаления, а затем вставки, вы должны сохранить идентификатор элементов (у меня всегда есть первичный ключ автоинкремента) в пользовательском интерфейсе и публиковать их в бэкэнд, чтобы вы могли обновлять, вставлять или удалять.

Я использую ASP.net MVC, и там я храню список всех элементов со скрытым полем с идентификатором. В моем пользовательском интерфейсе единственный способ удалить элемент - это очистить все поля, но скрытый идентификатор все еще на месте, поэтому позже я могу удалить элемент в БД. Для вставки / обновления это просто, потому что вам нужно только проверить, не пустой ли идентификатор.

person Eduardo Molteni    schedule 25.02.2016
comment
Спасибо, что подтвердили мой подход. Для удаления я написал метод, который сравнивает исходную коллекцию с новой коллекцией (отправленной для сохранения) и удаляет все различия. - person markau; 27.02.2016