Entity Framework, SQL CE 4.0 и автоматизация тестирования БД - PullRequest
0 голосов
/ 05 августа 2011

Я хочу выполнить тесты "быстрой интеграции" (так называемой "интеграции с рабочим столом") проекта с использованием EF 4.0 / 4.1, подключенного к SQL Server 2008. Это означает, что мне нужно обменять зависимость от SQL Server 2008 с чем-то ещелегкий вес.Я хотел бы заменить SQL CE 4.0, как выполненный из mstest или mbunit.

Я уже определил, как мне нужно преобразовать файл EDMX, чтобы сделать его совместимым с SQL CE 4.0.Я собираюсь сгенерировать EDMX для использования в CE из события предварительной сборки в моем проекте mstest или mbunit.Но мне нужно знать, как убедить EF использовать только что созданный файл EDMX из моего тестового проекта вместо рабочего файла EDMX?Я не думаю, что это так просто, как изменить строку подключения.

Я подозреваю, что файл EDMX встроен во встроенные сборки как ресурс, поэтому, возможно, этот вопрос о том, как поменять ресурс перед его получениемскомпилирован в DLL.Однако, если я делаю это неправильно, мне просто нужно руководство о том, как достичь своей цели.

1 Ответ

1 голос
/ 05 августа 2011

Проблема в том, что EDMX является только функцией времени разработки. Наличие нового EDMX ничего не значит. Во время компиляции EDMX делится на три отдельных файла: .ssdl, .msl, .csdl. Эти файлы определяют реальное отображение (вам нужно изменить только .ssdl для замены SQL Server на SQL Server CE). Поэтому самый простой способ для вас - настроить вашу модель на , сгенерировать файлы для создания каталога , а не добавлять их в качестве ресурсов. После этого вам просто нужно использовать измененный файл .ssdl и те же файлы .msl и .csdl в ваших тестовых проектах (пути к файлам являются частью строки подключения).

В любом случае, мне не нравится эта идея. Вы будете проводить интеграционные тесты в другой базе данных с разным определением отображения = пахнет, как будто вы тестируете другое приложение. Интеграционные тесты должны быть медленными, поэтому запускайте их в своей целевой среде. Это правда, что SQL Server и SQL Server CE очень близки, и замена для тестирования должна работать, но все же есть различия.

...