2

Итак, я выполнил эту инструкцию из блога команды ADO.NET, чтобы попытаться создать небольшой тестовый проект. Я проверил все два раза. Кажется, что он не работает и продолжает говорить, что строка соединения отсутствует.Entity Framework DbContext Строка подключения в app.config/web.config не отображается

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

Шаг. 1 Создайте этот файл UserModels.dll. В dll, файле App.Config, edmx сгенерировал эту строку подключения: (нажмите кнопку «test» при ее создании, и она успешно соединится и сформировала диаграмму EDMX всех таблиц из «UserDatabase»)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="UserModelsContainer" connectionString="metadata=res://*/UserModels.csdl|res://*/UserModels.ssdl|res://*/UserModels.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MyDesktop\SQL2008;initial catalog=UserDatabase;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

Шаг 2. Затем я сделал тестовый проект:

class UnitTetst1 .... 
TestMethod1().... 
using (var db = new UserModelsContainer()) { 
    int i = db.Users.Count(); // <---expecting '0' for a new db, but I get an exception 
} 

--------- проблема здесь -----------------

Шаг 3. Запустите тест. Тогда я получаю InvalidOperationException ошибки вроде этого:

"No connection string named 'UserModelsContainer' could be found in the application config file." 

Походит DbContext не знает, где подобрать ConnectionStrings от App.Config ??

Помогите ~~

+0

Примечание: это относится ко всем * типам EF, Code-First, Database-First, Model-First. Помог мне с моей проблемой Code-First. – Rap

ответ

7

При запуске программы, это app.config из EXE-файла запуска в том, что читается. Файл app.config .dll никогда не используется. Поскольку UserModel.dll является dll, должен быть где-то, где вы работаете .exe (или веб-сайт). Поместите строку соединения в файл app.config exe (или это веб-сайт в web.config).

+0

Спасибо! починил это. То, что я сделал, было в тестовом проекте, Добавить новый элемент ... -> App.Config -> В качестве ссылки. Теперь он отлично работает. – Tom

+0

Вот почему чтение и перечитывание чего-то, чего мы не получаем в первую очередь, будет иметь общий смысл. Спасибо за потрясающий топ, добавив строку подключения в веб-приложениях. Web.config исправил ее ... Никогда не знал об этом. – Deepak

5

У меня возникла эта проблема, когда я пытался выполнить команду update-database из «консоли управления ящиком». У меня был отдельный проект для моего кода первого слоя доступа к данным, а другой для моего веб-проекта и т.д.

Я использовал следующую команду: «обновление базы данных--projectname MYPROJECTDANAME -CONNECTIONSTRINGNAME ConnectionString -Force»

поэтому он указал на мой проект MYPROJECTDANAME, однако он берет имя connectionstring из проекта запуска, который вы указали. Поэтому убедитесь, что проект, который вы отметили как проект запуска, имеет требуемую строку подключения.