Как мне отредактировать строку подключения Entity Framework?

115

Недавно мне пришлось отредактировать файл app.config, чтобы изменить строку подключения для модели данных Entity Framework ( .edmxфайла). Но я хотел бы знать: есть ли способ отредактировать строку подключения EF с помощью конструктора?

Исходная строка подключения автоматически создается мастером модели Entity Data Model. В этом случае строку подключения изменить нельзя - она ​​остается отключенной в окне свойств конструктора .edmx. Мне нравится избегать редактирования XML вручную, если это возможно (в app.config), поэтому мне было интересно, есть ли способ вернуться в исходный экран мастера, чтобы внести изменения в строку подключения и позволить инструменту редактировать файл app.config для меня.

DeveloperDan
источник

Ответы:

191

Если вы удалите строку подключения из app.configфайла, повторный запуск мастера модели данных сущности поможет вам создать новое подключение.

Фабиан Николье
источник
17
Превосходно. Это именно тот ответ, который я искал. На всякий случай я закомментировал существующую строку (а не удалил ее), сохранил изменения app.config, щелкнул правой кнопкой мыши конструктор и выбрал «Обновить модель из базы данных». Затем мастер разрешил мне включить конфиденциальную информацию (uid и pwd) в строку подключения. Спасибо!
DeveloperDan,
5
Если вы делаете сначала модель, щелкните правой кнопкой мыши конструктор и выберите вместо этого «Создать базу данных из модели»
Карл Онагер,
2
Это сработало и у меня, за исключением того, что мне пришлось обновить файл App.config, а затем перезапустить VS.NET 2012. Он не обнаруживал, что файл App.config изменился.
Гарри Инглиш
2
Мне пришлось явно вызвать save в файле app.config, чтобы дизайнер узнал, что строка подключения была удалена.
Rossco
1
Альтернативой перезапуску VS является 1. закомментировать строку подключения в app.config 2. перестроить проект, содержащий файл .edmx 3. щелкнуть правой кнопкой мыши поверхность конструктора .edmx и обновить модель из базы данных ... вверх в мастере строки подключения.
RIanGillis 03
18

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

Изменение файла конфигурации - обычная задача, потому что иногда требуется внести изменения, не перестраивая приложение. Это причина, по которой существуют файлы конфигурации.

Ладислав Мрнка
источник
+1 за напоминание: если они помещают это в файл конфигурации, это означает, что они хотят, чтобы вы могли его изменить. Меня больше всего беспокоил тот факт, что мои изменения могут быть
отменены
Вы должны пойти и изменить строку подключения в конфигурации приложения проекта, которому принадлежит edmx. Не конфиг приложения верхнего уровня (который используется при запуске). o_0
AKAVA
9

Обычно строки подключения определяются в Web.config. После создания edmx строка подключения будет сохранена в App.Config. Если вы хотите изменить строку подключения, перейдите в app.config и удалите все строки подключения. Теперь перейдите в edmx, щелкните правой кнопкой мыши поверхность конструктора, выберите « Обновить модель из базы данных» , выберите строку подключения из раскрывающегося списка, нажмите « Далее» , «Добавить» или «Обновить» (выберите то, что вы хотите) и закончите.

В окне вывода это будет примерно так:

Созданный файл модели: UpostDataModel.edmx. Загрузка метаданных из базы данных заняла 00: 00: 00.4258157. Генерация модели заняла 00: 00: 01.5623765. Добавлена ​​строка подключения в файл App.Config.

DanKodi
источник
У меня аналогичная проблема, но когда я закомментирую строку подключения, обновляю модель, выбираю новую строку подключения, мой класс context.cs в модели очищается. Не уверен, почему он это делает, если только не удается создать класс контекста?
bithift
1
Так не должно быть. Возможно, ваш инструмент для создания шаблонов T4 поврежден.
DanKodi
Согласен, «не должно». Тем не менее, Айв потерял счет, когда вносил более чем несколько нетривиальных изменений в базовую схему, что в конечном итоге мне пришлось просто уничтожить модель и создать новую. Возможно, с EF7 и удалением файла edmx может что-то помочь. В любом случае, это то, что я сделал и на этот раз, просто выделил все в модели, нажал «Удалить» и вернул эти элементы обратно.
bithift
2

Откройте файл .edmx в любом текстовом редакторе, измените Schema = " your required schema ", а также откройте файл app.config / web.config , измените идентификатор пользователя и пароль из строки подключения . вы сделали.

bijon75
источник
Да, это сработало.
ggderas
1

Следуйте следующим шагам:

  1. Откройте app.config и прокомментируйте строку подключения (сохраните файл)
  2. Откройте edmx (перейдите в свойства, строка подключения должна быть пустой), снова закройте файл edmx
  3. Откройте app.config и раскомментируйте строку подключения (сохраните файл)
  4. Откройте edmx, перейдите в свойства, вы должны увидеть обновленную строку подключения !!
Сезар Альварадо Диас
источник