Возможно глупый вопрос, но я все еще пытаюсь обернуть голову вокруг nHibernate.
Насколько я могу судить по использованию программного обеспечения, nHibernate требует от вас немного дополнительной обработки для правильного сохранения изменений.
Давайте представим, что у меня есть объект X, который может содержать множество объектов Y. Я создам X, у которого есть 2 Y, каждый из которых имеет свои собственные свойства. Затем я решаю, что хочу обновить X. Я собираюсь добавить новый Y и изменить один из существующих Y.
Итак, я загружаю свой объект X, используя его идентификатор. Затем я перебираю Y, которые добавляю, добавляю их в X и сохраняю лот, используя оператор обновления.
Если вы сделаете это, вы обнаружите, что «старые» Y осиротели в базе данных. Что, когда я думаю об этом, именно то, что я ожидал бы случиться - в конце концов, я не избавился от этих объектов, я просто создал несколько новых.
Так что есть два способа взглянуть на это. Либо я должен удалить все данные Y и затем заново создать их, либо я должен иметь возможность отметить до nHibernate, что то, что я делаю, является изменением и что оно должно обновлять существующие объекты, а не создавать новые , Проблема в том, что я не уверен, какой подход является «правильным» или как лучше всего это сделать - первый кажется чрезвычайно неэффективным, а второй означает установку большого количества «измененных» флагов и очень сложного кода.
Так что я почти уверен, что должно быть более простое решение, которого мне не хватает в моей глупости. Может кто-нибудь указать мне на лучший подход и как лучше всего справиться с ним в nHibernate ... то есть, если вопрос вообще имеет какой-либо смысл:)
Ура,
Matt