Прочтите строку подключения из app.config в моем проекте библиотеки DataAccess для dbContext

Я работаю над решением VS2012, в котором есть проект ASP.NET MVC 4.0 и несколько библиотек классов, таких как мои менеджеры, поставщики и проекты DataAccess. Мой класс dbContext определен внутри проекта DataAccess.

Моя цель - ограничить информацию о строке подключения в файле App.Config проекта DataAccess. Я пытаюсь не указывать connectionString где-либо еще в проекте, поскольку именно мои классы DataAccess будут взаимодействовать с БД.

Теперь, если я укажу свою строку подключения как мой класс dbContext путем жесткого кодирования, мой проект будет работать нормально и сможет читать данные из БД.


    public MyDbContext()
        : base(@"Data Source=MYLAPTOP\SQL2012MAIN;Initial Catalog=MyDB;User ID=sa;Password=*****")
    {

    }

Но если я укажу строку подключения в файле app.config следующим образом:

<connectionStrings>
<add name="MyDBConnection" connectionString="Data Source=MYLAPTOP\SQL2012MAIN;Initial Catalog=MyDB;User ID=sa;Password=*****;Connect Timeout=200; pooling='true" providerName="System.Data.SqlClient" />
</connectionStrings>

и используйте его в моем классе dbContext следующим образом:

public MyDbContext()
            : base("MyDBConnection")
        {

        }

Не работает. Я попытался использовать ту же строку подключения в файле web.config моего проекта MVC, но снова получаю ту же ошибку (прикрепленное изображение):

введите описание изображения здесь

Кто-нибудь может помочь мне ...

Спасибо, Хари


person Hari    schedule 09.11.2014    source источник


Ответы (2)


Я думаю, что ваша вина заключается в объединении, поэтому попробуйте Pooling = True и убедитесь, что вы удалили одну кавычку, которая у вас есть, '

Есть еще один момент, который вы, возможно, захотите изучить, я думаю, что пул по умолчанию включен, поэтому установка Pooling = True, хотя это явно, если я правильно помню, не имеет никакого эффекта, тогда как Pooling = False имеет эффект .

person Louis Lewis    schedule 09.11.2014
comment
Привет, Луи, спасибо, что ответил и рассмотрел мою проблему. Эта одиночная кавычка (') была проблемой. Как только я удалил его, строка подключения начала работать, как и ожидалось, из моего файла web.config. - person Hari; 10.11.2014
comment
Однако, если я использую тот же conn. Строка из моего файла app.config я получаю следующую ошибку: при установке соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: 50 - Произошла ошибка времени выполнения локальной базы данных. Указанный экземпляр LocalDB не существует. - person Hari; 10.11.2014
comment
Как вы думаете, поскольку в моем файле web.config сейчас нет поля строки подключения, мое приложение может пытаться прочитать его из appHost.config или чего-то еще? Ссылка на loaclDB предполагает, что он пытается использовать SQLServerExpress - person Hari; 10.11.2014
comment
Вы также должны добавить строку подключения к веб-проекту в файл web.config. - person Louis Lewis; 10.11.2014

Чтобы заставить его работать, вы можете попробовать вызвать базовый конструктор следующим образом:

public MyDbContext()
    : base("MyDBConnection", backend, metadataSource)
{
}

В этом случае backend и metadataSource будут полями в вашем классе MyDbContext, которые содержат конфигурацию backend и конфигурацию сопоставления.

В Создание OpenAccessContext, вы найдете более подробную информацию о дизайне контекста.

person Doroteya Agayna    schedule 10.11.2014