Несколько EDMX для тех же классов POCO - PullRequest
3 голосов
/ 18 сентября 2011

На данный момент у меня есть два файла edmx: для MySQL и для SQL Lite (для тестирования в памяти).И мне нужно сопоставить их с одним и тем же набором классов POCO.Можно ли хранить два файла edmx или мне следует использовать две модели хранения с общими сопоставлениями и концептуальной моделью?

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

1 Ответ

3 голосов
/ 19 сентября 2011

Не используйте разные платформы баз данных для тестирования.Это абсолютно неправильный подход с EF.Каждая база данных может иметь различную поддержку функций в своем провайдере EF, поэтому вы собираетесь тестировать разный код.

Если вы действительно хотите использовать две разные платформы баз данных, вы должны использовать свободный API для отображения, потому что это сделает его намного проще.

При использовании файла EDMX для картографирования всегда требуется некоторая двойственность.Очевидно, что ваши классы должны оставаться такими же, и ваша концептуальная модель должна оставаться такой же.Это означает, что CSDL-часть обоих файлов EDMX должна быть одинаковой.Часть SSDL должна отличаться, потому что она предназначена для данной платформы базы данных.Часть MSL должна отличаться только в том случае, если таблицы в SSDL имеют разные имена, разные столбцы, разные схемы или отношения с разными именами.

Если вы хотите уменьшить двуличие, вам вообще не следует использовать EDMX, а работать с CSDL, MSLи SSDL файлы напрямую - вы потеряете поддержку дизайнера.Возможно, это правильно, но гораздо сложнее в использовании.

Самый простой подход - сохранить все то же самое, за исключением поставщика базы данных, и позволить некоторому сценарию предварительной сборки обновить второй EDMX для SQLite из основного EDMX для MySQL - сценарий, вспомогательное приложение или преобразование XSLT для этого обновления полностью зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...