Обновление NHibernate, Не работающее

React Navigation предоставляет способ для вашего приложения переходить между экранами. Согласно вашему требованию Splash Screen -> LoginScreen -> HomeScreen (with Bottom Navigation) вложенный стек навигации будет использоваться с StackNavigator & amp; TabNavigator.

для главного экрана необходимо создать StackNavigator:

const stackNavigationHome = createStackNavigator({ Home , HomeDetail});

Для экрана настроек StackNavigator, как показано ниже:

const stackNavigationSetting = createStackNavigator({ Settings},{headerMode: 'none'});

Оба Home & amp; Экран Settings будет отображаться в TabNavigator:

const TabNavigator = createBottomTabNavigator({
  home: stackNavigationHome,
  settings: stackNavigationSetting,
});

В начальной точке стека вам потребуется навигация по стеку с логином и вкладкой, как показано ниже:

const stackNavigationLogin = createStackNavigator({ Login, TabNavigator},{headerMode: 'none'});

Структура навигации завершена здесь, теперь нужно создать контейнер приложения:

export default createAppContainer(stackNavigationLogin);

Вы можете найти полный источник на Github

8
задан Qtax 29 September 2011 в 13:46
поделиться

3 ответа

Существует несколько вещей, которые могут происходить.

1) Обновление перестало работать, и NHibernate повышает исключение, которое глотают где-нибудь - который может произойти в зависимости от того, как Вы настроили вещи. Таким образом в VS удостоверяются, что все исключения вызовут повреждение.

2) Обновление кэшируется и не пишется непосредственно в DB - можно вынудить данные быть записанными с помощью Repository.Flush();

3) Вы - верный _projects [0], был считан из DB - я предполагаю, что это происходит в TestSetup? Если не NHibernate не будет знать об этом как об объекте, который находится под его 'контролем'.

BTW - Это - хорошая практика для чтения данных, которые Вы собираетесь изменить в самом тесте и затем отменить то изменение, сбрасывая DB к он - исходное состояние. Таким образом Ваш тест DB не будет изменен Вашим тестированием.

BTW2 - В вышеупомянутом тесте, если проект. Имя было уже обновлено однажды, т.е. тест работал успешно. Затем следующий раз вокруг теста успешно выполнится, даже если само обновление перестанет работать. Способ избежать этого - добавляет DateTime к проекту. Назовите, не устанавливайте его на фиксированное значение.

20
ответ дан 5 December 2019 в 05:27
поделиться

Другая вещь - это: когда Вы сохраняете объект с помощью сессии, и Вы загружаете тот же объект из той же сессии с помощью идентификатора объекта, Вы получите тот же экземпляр, который Вы сохранили - независимо от того, вставляет ли кто-либо, или обновления были выпущены к базе данных.

Поэтому 1-го кэша уровня NHIBERNATE, который является картой идентификационных данных, которая принадлежит сессии.

Если Вы хотите, чтобы Ваш тест проверил то, что было на самом деле записано в базу данных, можно сделать это как так:

session.Save(someEntity);
session.Flush(); // forces the entity to be inserted
session.Clear(); // clears the session's identity map, thus
                 // detaching someEntity from the session

var loadedEntity = session.Get<EntityType>(someEntity.Id);

// now you may compare the fields of someEntity and loadedEntity
// to verify that they were actually persisted
6
ответ дан 5 December 2019 в 05:27
поделиться

ISession.Update в NHibernate не передает изменения в базе данных. Это используется для обновления переходных экземпляров на другой сессии от той, которая использовалась для получения экземпляра (см. здесь для деталей). Изменения отправляются в базу данных, когда сессия сбрасывается. По умолчанию сессии работают в режиме FlushOnCommit, что означает, что изменения в объектах будут отправлены в базу данных, когда транзакция NHibernate будет фиксироваться (см. здесь для получения дополнительной информации о различных режимах сброса).

5
ответ дан 5 December 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: