Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > NHibernate не обновляет,не удаляет данные и молчит


Автор: aleksend 23.8.2010, 13:46
Привет всем. Я в FluentNHibernate начинающий, возникла такая проблема: не могу с помощью NHibernate обновить либо удалить запись в таблице базы (СУБД Sql Server 2005). При этом вывод данных из таблицы и добавление новой записи проходят успешно. В чем ошибка?

Вот так вывожу:

Код

IList<Vacancy> VList =
                Global.CurrentSession.CreateCriteria(typeof(Vacancy)).List<Vacancy>();


Вот так добавляю:

Код

var EditVac = new Vacancy();


Global.CurrentSession.SaveOrUpdate(EditVac);

А вот так обновить не получается:

Код

var EditVac = Global.CurrentSession.Get<Vacancy>(id);//Get работает нормально, объект из базы вынимает, тут не придерешься
EditVac.Name = tbxVacancyName.Text;
Global.CurrentSession.SaveOrUpdate(EditVac);//эффект нулевой...


И удалить тоже не получается:

Код

var DelVac = Global.CurrentSession.Get<Vacancy>(id);//здесь все нормально
                    Global.CurrentSession.Delete(DelVac);//а здесь опять ноль эффекта, и молчим как рыба


При всем этом безобразии сам NHibernate молчит как рыба, ни эксепшенов, ничего. Прошу помочь.

Маппинги на всякий случай (класс Vacancy ссылается на два других класса, и в базе такая же схема):

Код

    public class PeriodMap : ClassMap<Period>
    {
        public PeriodMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);

        }
    }

    public class CurrencyMap : ClassMap<Currency>
    {
        public CurrencyMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
        }

    }


    public class VacancyMap : ClassMap<Vacancy>
    {
        public VacancyMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
            Map(x => x.Duties);
            Map(x => x.CompensationMin);
            Map(x => x.CompensationMax);
            Map(x => x.DateTime);
            References(x => x.Currency);
            References(x => x.Period);
        }
    }


 smile 

Автор: Wanderer2019 23.8.2010, 15:18
Тебе нужно изменения закоммитеть, прежде чем они вступят в силу.. 

Смотри transaction объект. 

Я так понимаю в этом проблема, если в остальном ошибок не кидает.

Автор: aleksend 23.8.2010, 16:27
Гениально! Кто не знает, тот фигушки догадается  smile  Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)