Откат записей создается PersistenceSpecifications в Быстром NHibernate

Параметр retry_interval контролировал случай, когда сообщение не было подтверждено во время нормальной работы, то есть клиент, по-видимому, не отключился, но не отправлял подтверждения.

Повтор доставки сообщения, описанный в спецификации, охватывает случай, когда клиент повторно подключается. Такое поведение присутствует в Mosquitto, поэтому нарушения спецификации нет, и сообщения будут повторены.

7
задан Matthew Bonig 11 March 2009 в 13:39
поделиться

4 ответа

Попробуйте установить IsolationLevel на транзакции. Этот фрагмент работал на меня:

using (var trans = _session.BeginTransaction(IsolationLevel.ReadUncommitted))
{
    new PersistenceSpecification<Event>(_session)
        .CheckProperty(p => p.StartTime, new DateTime(2010, 1, 1))
        .VerifyTheMappings();
    trans.Rollback();
}
9
ответ дан 6 December 2019 в 15:32
поделиться

PersistenceSpecification обычно используется с базой данных в оперативной памяти как SQLite, вот почему он ничего не откатывает. Я полагаю, что существует перегрузка конструктора, которая берет ISession экземпляр, Вы попытались получить транзакцию оттуда затем откат это после?

2
ответ дан 6 December 2019 в 15:32
поделиться

Я думаю, проблема здесь в том, что VerifyTheMappings () вызывает TransactionSave (), который выполняет tx.Commit () в базе данных. Как указал Джеймс, этот метод, кажется, отлично подходит для отказа от методов тестирования в памяти. Это не работает в случае тестирования сопоставлений с устаревшей базой данных.

Это не работает в случае тестирования сопоставлений с устаревшей базой данных.

Это не работает в случае тестирования сопоставлений с устаревшей базой данных.

2
ответ дан 6 December 2019 в 15:32
поделиться

Один из вариантов - использовать выделенную структуру для этой задачи. Capistrano очень хорошо подходит для языков сценариев, таких как php. Он основан на Ruby, но если вы выполните поиск, вы сможете найти инструкции о том, как использовать его для развертывания приложений php.

framework, но вы можете сделать это с любой структурой тестирования, которую хотите

sessionfactoryprovider должен предоставить объект isession

вот пример использования

/// <summary>
/// Testing the mapping of our entities.
/// there must be a server connection for this kind of test.
/// </summary>
[TestFixture]
internal class someMappingTest
{
    [Test(Description = "Check the Encoding Profile FluentNHibernate Mapping")]
    [Timeout(20000)]
    public void checkthatMappingWorks()
    {
        // creatw the new entity
        TestedType testOn = new TestedType();

        // set the initialization values
        testOn.Name = "TestProfileExecution";

        // create the test object
        new GenericMappingTesterWithRealDB<TestedType>
        {
            // assign an entity
            EntityToTest = testOn,

            // assign new values for update check
            PerformEntityManipulationBeforeUpdate =
                delegate(TestedType testedTypeBeingTested)
                    {
                        return testedTypeBeingTested.Name = "Updateing Test";
                    }
        }.
        // call run test to perform the mapping test.
        RunTest();

    }
}
0
ответ дан 6 December 2019 в 15:32
поделиться
Другие вопросы по тегам:

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