Подтвердить что ты не робот

Пакетное обновление возвращало неожиданный подсчет строк из обновления; фактическое количество строк: 0; ожидается: 1

Мне сложно определить исключение NH:

Пакетное обновление возвратило неожиданный счет строки из обновления; фактическая строка количество: 0; ожидается: 1

Мой код Dal:

 public T Save(T item)
        {
            using (ISession session = NHibernateHelper.GetSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    session.SaveOrUpdate(item);

                    transaction.Commit();

                    return item;
                }
            }
        }

Мой файл log4net:

команда 0: UPDATE Metadata_FriendDetails SET UserId = @p0, Email = @p1, Name = @p2 WHERE FriendId = @p3; @p0 = a358ab9d-d481-4bdd-8cb2-18ddc8898c70 [Тип: Guid (0)], @p1 = '[email protected]' [Тип: String (4000)], @p2 = 'myFriend' [Тип: String (4000)], @p3 = 2ea35658-edb1-43e3-b848-e1915d1042df [Тип: Guid (0)]

2011-12-02 13: 06: 49,750 [Агент: поток выполнения адаптера для тестирования 'SaveFriendDetails_Test' с идентификатором '17016e48-1ff4-4dea-8536-6aa3b24e5fb7'] DEBUG NHibernate.AdoNet.AbstractBatcher - Закрытый IDbCommand, откройте IDbCommands: 0 2011-12-02 13: 06: 49,751 [Агент: поток выполнения адаптера для test 'SaveFriendDetails_Test' с идентификатором '17016e48-1ff4-4dea-8536-6aa3b24e5fb7'] ОШИБКА NHibernate.Event.Default.AbstractFlushingEventListener - не удалось синхронизировать состояние базы данных с сеансом NHibernate.StaleStateException: пакетное обновление возвратило непредвиденную строку счет от обновления; фактическое количество строк: 0; ожидается: 1

Кто-нибудь видит проблему?

ТИА

4b9b3361

Ответ 1

проблема заключалась в том, что при сохранении я не должен указывать значение id и при обновлении я должен его предоставить.

Ответ 2

Перед сохранением необходимо установить объект Id null.

пример:

obj.setId(null);
objectDao.save(obj);