Это мой взгляд на похожий сценарий (очень похожий на ответ @Greatran, но я не смог найти элемент Обработка артефактов метаданных элемент свойства в моем файле .EDMX):
- Создайте хотя бы один раз ваш проект, содержащий файл EDMX
- Получить копию сгенерированного файла .SSDL, содержащегося в подпути
Your\Project\Folder\<strong>obj\Debug\edmxResourcesToEmbed\</strong>Your\EDMX\Namespace\
- Скопируйте и включите его в свой проект, например, в том же каталоге, что и файл EDMX:
...\Your\EDMX\Namespace\MyModel.ssdl
- Переименуйте его, добавив суффикс, соответствующий вашей среде развертывания, например, для среды
Debug
это будет MyModel.Debug.ssdl
- Из его свойств файла установите Действие построения на
Embedded Resource
- Получить копию связанной строки подключения к контексту из файла
Web.config
веб-проекта. Это должно быть что-то вроде
<strong>connectionString="metadata=res://\*/</strong>XXXXX.MyModel<strong>.csdl|
res://*/</strong>XXXXX.MyModel<strong>.ssdl|
res://*/</strong>XXXXX.MyModel<strong>.msl;
provider=</strong>ZZZZZ;<strong>provider connection string=</strong>'AAAAA'<strong>" </strong>
- Преобразуйте эту строку подключения в файле конфигурации веб-проекта для вашей среды развертывания, скажем,
Web.Debug.config
, чтобы заменить файл SSDL, созданный EDMX, вашим пользовательским файлом SSDL:
<strong>connectionString="metadata=res://\*/</strong>XXXXX.MyModel<strong>.csdl|
res://*/</strong>YYYYY.MyModel.Debug<strong>.ssdl|
res://*/</strong>XXXXX.MyModel<strong>.msl;
provider=</strong>ZZZZZ;<strong>provider connection string=</strong>'BBBBB'<strong>" </strong>
Последний пункт может быть сложным, по крайней мере, по моему опыту, поскольку пространство имен сгенерированного EDMX ресурса SSDL отличается от пространства имен моего пользовательского ресурса SSDL. Чтобы получить точное пространство имен для моего пользовательского ресурса, я запустил сеанс отладки в VS и проверил вывод this.GetType().Assembly.GetManifestResourceNames()
в Immediate Window (спасибо stu432 ).
Кроме того, я изменил часть connection string ='AAAAA'
, чтобы она соответствовала серверу БД в среде развертывания.