Как создать базу данных в памяти с SQL CE 4.0? - PullRequest
8 голосов
/ 23 февраля 2011

Вопрос

Как создать базу данных в памяти с SQL CE 4.0?

Контекст

IХотелось бы провести некоторое модульное тестирование (или автоматическое интеграционное тестирование) с реальной базой данных, которая находится в памяти.Это сделает тесты быстрыми, плюс база данных исчезнет, ​​когда тест завершится.

Согласно сообщению Скотта Гатри в блоге " VS 2010 SP1 и SQL CE «Новый SQL CE 4.0 способен на это: предоставление базы данных в памяти.

Однако я не смог найти в Интернете никаких учебных пособий или примеров кода, показывающих, как это делается.Я нашел этот пример строки подключения только в этом блоге .Но это также поражает жесткий диск.

enter image description here

Ответы [ 2 ]

8 голосов
/ 23 февраля 2011

SQL Server CE 4.0 не допускает базы данных только для памяти.

В этих сообщениях блога говорится, что CE работает в памяти вашего приложения.

Комментарий Скотта говорит, что CE отображает файл в память, но для этого по-прежнему требуется файл.

3 голосов
/ 23 февраля 2011

@ linkgoron,

Планируете ли вы добавить функцию БД в памяти?Это может сильно помочь в модульном тестировании (создание / удаление БД в памяти с использованием Code-First для каждого теста), которое должно быть намного быстрее, чем в файловой БД (я использовал этот подход с другими БД, и мне бы очень хотелось на самом делеиспользуйте для этого SQL Server CE).Это также уменьшает необходимость имитации доступа к данным / репозитория при модульном тестировании.

Сам SQL CE работает в памяти - и, следовательно, его довольно быстро создавать и использовать для проектов модульного тестирования.Я полагаю, что для этого требуется файл БД на диске, но он немедленно отображает его в памяти (так же быстро, как в оперативной памяти).Вы все равно создаете / удаляете файл как часть вашей логики настройки / разрыва - но это должно быть так же просто, как удаление файла (не требуется явного удаления или очистки).

Надеюсь, это поможет,

Скотт

~ Из ссылки в блоге.

...