#.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, если она будет перезаписываться неверными значениями каждый раз, когда вы обновляете свой проект из системы управления версиями.