Как переключаться между SQL и SQL CE в Entity Framework 4?Или как программно изменить «пространство имен схемы» в файле edmx - PullRequest
2 голосов
/ 07 апреля 2011

Работая с первым подходом к модели в Entity Framework 4, я хотел бы переключить базу данных с реального SQL (Data.SQLClient) на SQL CE (Data.ServerCe) и обратно.

Я знаюкак это сделать вручную:

Изменить провайдера с System.Data.SqlServerCe.3.5 на System.Data.SqlClient

  1. изменить строку подключения контейнера / контекста модели
  2. изменить в файле .edmx (пространство имен схемы = атрибут Model1.Store "provider =" ... ")

Что я не могу понять, так это то, как я мог бы сделать это изменение во время сборки / компиляции, чтобы я мог легко переключаться между SQLClient и SQLServerCE на основе конфигурации.

Любой другой способ достижения того же результата мог быбыть оцененным тоже!(есть одна модель, в которой источник данных может переключаться между SQL и SQL CE)

1 Ответ

2 голосов
/ 07 апреля 2011

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

Вы можете (щелкнуть правой кнопкой мыши) в представлении конструктора вашего edmx (не для файла в обозревателе решений) и нажать «Свойства», в PropertyGrid найдите «Обработка артефактов метаданных» и измените значение с «Вставить в». Выходная сборка "в" Копировать в выходной каталог ".

Однако, как только вы измените это, вместо того, чтобы выпекать edmx в сборку, вы увидите три файла на основе XML (MyModel.ssdl, MyModel.csdl, MyModel.msl) в выходном каталоге.

Теперь вы можете свободно вносить любые изменения в эти файлы в процессе сборки.

Также обязательно измените строку подключения на что-то вроде этого:

<add name="MyEntities" connectionString="metadata=.\MyModel.csdl|.\MyModel.ssdl|.\MyModel.msl; (..) />

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

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