Прочетете низ за връзка от app.config в моя проект на библиотека DataAccess за dbContext

Работя върху решение VS2012, което има проект ASP.NET MVC 4.0 и множество библиотеки от класове като моите проекти за мениджъри, доставчици и DataAccess. Моят клас dbContext е дефиниран в проекта DataAccess.

Целта ми е да огранича информацията за низа за връзка във файла App.Config на проекта DataAccess. Опитвам се да избегна посочването на connectionString навсякъде другаде в проекта, тъй като моите класове DataAccess биха взаимодействали с DB.

Сега, ако посоча моя низ за връзка в моя клас dbContext чрез твърдо кодиране, моят проект работи добре и може да чете данни от DB.


    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 е активирано по подразбиране, така че настройката 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 Network Interfaces, грешка: 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)
{
}

В този случай бекенд и metadataSource биха били полетата във вашия клас MyDbContext, които съдържат конфигурацията на бекенда и конфигурацията на картографирането.

В Създаване на OpenAccessContext ще намерите повече подробности за дизайна на контекста.

person Doroteya Agayna    schedule 10.11.2014