NHibernate не сохраняющиеся коллекции - PullRequest
1 голос
/ 19 декабря 2008

У меня довольно странная ошибка с NHibernate. Я получаю сообщение об ошибке с ISession, которая распределяется между потоками, и она устраняется путем предоставления моего собственного соединения ADO.NET, например:

            IDbConnection connection = new SqlConnection(ApplicationConfiguration.ConnectionString);
            connection.Open();

            ISession session = _sessionFactory.OpenSession(connection);
            session.FlushMode = FlushMode.Commit;

            return session;

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

любая помощь, что я делаю не так? я использую NHibernate 2.0 и я вызываю Session.Flush () и Transaction.Commit ().

веселит.

Ответы [ 3 ]

3 голосов
/ 19 декабря 2008

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

2 голосов
/ 19 декабря 2008

Проверьте атрибут cascade в отображении вашей коллекции - по умолчанию для него установлено значение «none», то есть дочерние объекты должны быть явно сохранены. Вы, вероятно, хотите cascade = "all" или cascade = "all-delete-orphan".

0 голосов
/ 19 декабря 2008

используете ли вы NHibernate.ISession.save (объект) перед очисткой и фиксацией списка шин?

...