проблема с nhibernate при чтении из БД - PullRequest
1 голос
/ 02 января 2011

Я фиксирую некоторые данные в БД с помощью nhibernate.

TimeSlices newTimeSlices = new TimeSlices(timeSliceStartTime, timeSliceEndTime, schedule, newScheduleDay);
                        tsDao.Save(newTimeSlices);
                        tsDao.CommitChanges();

, но затем я пытаюсь прочитать эти данные

public ScheduleDays GetByDate(DateTime date, Schedules schedule)
        {
            NHibernateSession.Refresh(schedule);

            DateTime tmpDate = new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);

            return NHibernateSession.CreateCriteria(typeof (ScheduleDays))
                .Add(Restrictions.Eq(ScheduleDaysProperties.Date.ToString(), tmpDate))
                .Add(Restrictions.Eq(ScheduleDaysProperties.Schedule.ToString(), schedule))
                .UniqueResult<ScheduleDays>();
        }

, но безуспешно.Я смотрю в БД, и он там, но я не могу прочитать его из БД.Как я могу обновить сеанс или что я должен сделать, чтобы я мог прочитать эти новые данные после того, как я сохраню их.Проблема только в том случае, когда я работаю с компонентами ajax.

public ScheduleDaysMap()
        {
            Id(x => x.ScheduleDayId);

            Map(x => x.Date)
                .Not.Nullable();

            Map(x => x.MinutesOrderInterval)
                .Not.Nullable();

            References(x => x.Schedule)
                .Column(TableNames.ScheduleId)
                .Not.Nullable()
                .LazyLoad();

            HasMany(x => x.Orders)
                .KeyColumn(TableNames.ScheduleDayId)
                .Inverse()
                .LazyLoad()
                .AsBag();

            HasMany(x => x.TimeSlices)
                .KeyColumn(TableNames.ScheduleDayId)
                .Inverse()
                .LazyLoad()
                .AsBag();

            Version(x => x.Timestamp);
        }

timeSliceStartTime, timeSliceEndTime и newTimeSlices имеют тип od DateTime

schedule - это тип объекта БД (таблицы расписаний)

newScheduleDay - это тип объекта БД (Table ScheduleDays)


Я использую C # + свободный nhibernate 1.1

Может быть проблема с отображением и отложенной загрузкой или asbag?Или что может быть не так?

Ответы [ 2 ]

1 голос
/ 03 января 2011

Я не знаю проблему, но вот как я бы ее отладил:

  1. Проверьте, правильно ли он сохранен в базе данных. Убедитесь, что отношения есть.
  2. Включить вывод SQL согласно здесь
  3. Проверьте, какой SQL генерирует ваш запрос. Попробуйте запустить SQL самостоятельно.
  4. Изменить отображение или запрос с помощью интуиции.
  5. Попробуйте написать запрос другими способами, например, используя nHibernate.LINQ.

nHibernate не кеширует запросы, если вы не сообщите его .

0 голосов
/ 03 января 2011

Привет. Можете ли вы запустить профилировщик nhibernate и посмотреть, какой запрос запускается.Ссылка на то же самое nhprof.com

Google, чтобы увидеть, как использовать nhprof очень просто.Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...