Подождите! какой конфигурационный файл? (Строка подключения Entity Framework)

#.net #entity-framework #connection-string #entity-framework-4.1

#.net #entity-framework #строка подключения #entity-framework-4.1

Вопрос:

Итак, я создал свою entity model в отдельной библиотеке классов. Мне пришлось добавить строку подключения к app.config файлу этой библиотеки классов. Затем я добавил ссылку для этого проекта в свое веб-приложение. Я добавил ту же строку подключения в web.config моего веб-приложения, думая, что именно отсюда Entity Framework будет считывать строку подключения.

Все было нормально, пока я не развернул свое веб-приложение. При развертывании я меняю строку подключения в web.config (не app.config в библиотеке классов), и я начал получать ошибки. После проведения некоторых исследований я обнаружил, что строка подключения в обоих web.config и app.config должна совпадать!!

Это просто глупо! Каждый раз, когда мне нужно развернуть мое веб-приложение в другой среде, я должен вернуться и изменить строку подключения в app.config файле, а затем перекомпилировать мой проект библиотеки классов, чтобы он мог получить обновленную строку подключения?

Кто-нибудь нашел лучший способ сделать это? Я имею в виду, я не могу быть единственным человеком, который думал о размещении entity model в отдельной сборке.

Возможное решение (если вы используете EF 4.1): Поскольку единственная причина, по которой нам нужно иметь app.config внутри проекта библиотеки классов, предназначена для разработчика EF. Если мы откажемся от дизайнерского подхода и перейдем к Code-First (EF 4.1), вам не понадобится файл app.config для вашего проекта библиотеки классов.

Комментарии:

1. У меня точно такая же настройка, но этой проблемы вообще нет. Все, что я делаю, это изменяю web.config, и он работает правильно. App.config не развернут, это может быть вашей проблемой.

2. Я думал, вы на что-то натолкнулись, но я проверил, и я не копирую / развертываю app.config … так или иначе, dll знает, когда две строки подключения (одна в app.config и одна в web.config) не совпадают. Если бы моя строка подключения web.config просто перезаписывала app.config, жизнь была бы хорошей, но этого не происходит.

Ответ №1:

Мы столкнулись с такой же ситуацией. Я попросил каждого разработчика компилировать сборку EF только с выбранной первой строкой подключения.

Таким образом, при развертывании в web.config требуется только одна строка подключения.

В конце концов, если каждая машина разработки и сервер развертывания имеют правильную информацию о подключении (для этой машины) в первой (и, надеюсь, единственной) строке подключения (т. Е. не ConnectionString4), жизнь становится легкой.

По сути, дополнительные строки подключения добавляются разработчиком в строку подключения dev, когда строка подключения по умолчанию (выбранная последней) не может подключиться.

Кроме того, нет причин расстраиваться из-за помещения уровня данных в отдельную сборку. Иногда это предпочтительнее.

Наконец, очень важно убедиться, что конфигурационный файл, содержащий строку подключения, не подключен к системе управления версиями — строка подключения часто локализована и вызовет «проблему с несколькими строками подключения» в EF и LINQ to SQL, если она будет перезаписываться неверными значениями каждый раз, когда вы обновляете свой проект из системы управления версиями.