NHibernate не реализует шаблон репозитория. Это заменяет это.
Базы данных SQLite в памяти хороши, если у вас есть простая реализация базы данных, но я обнаружил, что вещи могут стать громоздкими быстро, почти до такой степени, что становится настолько болезненным, если не больше, использовать SQLite как это заглушка / макет ISession / ICriteria / etc.
Один прекрасный пример этого: в одном из моих недавних проектов, в которых я использовал PostgreSQL в качестве производственной базы данных и SQLite в качестве тестовой базы данных, мне нужно было расширить NHibernate, чтобы добавить поддержку агрегатной функции, которая была недавно добавлен в PostgreSQL. Выяснение, как добавить это, было историей само по себе, но я решил это. Затем мне пришлось найти функциональный эквивалент в SQLite. Мне нужна была агрегатная функция, которая работала точно так же, как и ее коллега из Postgres. Там не было ни одного. Я спросил, и мне сказали, что есть способы расширить NHibernate, чтобы «подделать» эту функцию в SQLite. У меня также была возможность расширения SQLite для добавления этой функциональности.
Все, что я хотел сделать, это написать два, может быть, три теста вокруг сценария, который я пытался реализовать. Я потратил слишком много времени, пытаясь обеспечить функциональную эквивалентность между двумя системами. Это не стоило всех этих усилий для одной функции. А что будет, если в будущем мне понадобится добавить еще одну функцию?
Я думаю, что SQLite полезен. Это отличная облегченная система баз данных, и мне нравится, что вы можете удобно использовать ее как базу данных в памяти для простых сценариев. Тем не менее, я не уверен, что стоит использовать дальше. Я думаю, что теперь я буду использовать одну и ту же базу данных во всех средах, даже если это будет означать более медленные интеграционные тесты для всей логики сохранения данных.