У меня проблема с сохранением графа объектов в базу данных через NHibernate. В частности, я считываю данные из базы данных, инициализирую объекты, используя данные, вносю изменения в объекты и пытаюсь сохранить объект в базе данных с помощью saveorupdate на экземпляре корневого отчета в одной транзакции. Изменения могут включать операции добавления, обновления и удаления объектов.
Я хочу выяснить, сможет ли Nhibernate выяснить, какие типы команд sql (например, update, delete, insert) генерировать, и последовательность выполнения на основе ограничений внешнего ключа базы данных, все в одной транзакции .
Ниже мой код:
public class Report{
public virtual int Id {get;set;}
public virtual IList<Report> Children {get;set;}
public virtual Report Parent {get;set;}
public virtual IList<Parameter> Parameters {get;set;}
}
public class Parameter{
public virtual int Id {get;set;}
public virtual Report Report {get;set;}
}
Отчет может содержать набор параметров, отчеты и родительский отчет.
После инициализации на основе данных, извлеченных из базы данных, вносятся изменения в граф объектов, и попытайтесь сохранить его в базе данных с помощью NHibernate Session.SaveOrUpdate (), передав корневой экземпляр отчета. Однако он выдает исключение, говоря, что нельзя вставить ноль в столбец идентификатора.
Редактировать
Я только хочу выяснить, возможно ли для NHibernate генерировать команды sql (CRUD). Я открою другой вопрос, если у меня возникнут проблемы с кодом.
Любой идеал был бы очень признателен.