#nhibernate #sharp-architecture
#nhibernate #sharp-архитектура
Вопрос:
Я использую архитектуру MVC, NHibernate и Sharp для своего проекта.
Всякий раз, когда я сохраняю объекты (сущности), используя SaveOrUpdate
дочерние объекты, которые также обновляются. Но вместо обновления дочерних объектов он выполняется DELETE-INSERT
для всех дочерних объектов.
любая помощь.
Комментарии:
1. Как вы изменяете дочерние объекты?
2. Такое поведение возникает, когда вы изменяете свойство collection для объекта, а не изменяете / добавляете элементы в коллекцию. NHibernate видит изменения, происходящие с самим свойством, и выполняет удаление / вставку. Если вы загружаете дочерние элементы и присваиваете их сущности, не делайте этого. Нетерпеливая загрузка или ленивая загрузка.
3. Пожалуйста, не могли бы вы уточнить вопрос. Другим было бы очень сложно помочь с ограниченным описанием
Ответ №1:
Это происходит потому, что вы не обновляете существующие дочерние объекты, вы заменяете всю их коллекцию. Это заставляет Nhibernate думать, что он должен сохранить новую коллекцию.
Комментарии:
1. ДА. это именно то, что происходит. Когда в базе данных дочерних объектов нет данных, он просто делает одну вставку в базу данных. Но когда для дочернего объекта уже доступны данные, он удаляет предыдущие строки, а затем снова вставляет текущие данные.
2. Любое предложение о том, как это можно изменить, чтобы, когда мы когда-либо добавляли новый экземпляр дочернего объекта, он должен только добавлять новую строку вместо удаления предыдущих и повторной вставки.
3. Это потому, что вы назначаете коллекцию. Не назначайте коллекцию, добавьте свой элемент в существующую коллекцию.