Получите строку подключения для Entity Framework, используя шаблон POCO - PullRequest
10 голосов
/ 05 июля 2011

Я использую Entity Framework и мне нужно получить строку подключения, чтобы я мог создать контекст.

Я использую шаблон POCO. Мой контекстный объект имеет:

string ConnectionString = "name=MyAppConfigConnectionStringPropertyHere"

Поэтому, когда я пытаюсь просто построить свой контекст, он говорит:

"Указанное именованное соединение либо не найдено в конфигурации, не предназначено для использования с поставщиком EntityClient, либо недействительно"

Я видел в этом ответе , в котором указано, что существует метод GetConnectionString (). Но поиск в Google не привел меня к ссылке, которую я должен добавить, чтобы получить этот метод (по умолчанию его нет в моем проекте).

Итак, я не могу думать, что я первый, кто хочет получить строку соединения для структуры сущностей, используя шаблоны POCO. Как другие сделали это? Я думаю, я могу просто прочитать весь файл app.config и разобрать его. Но, похоже, это не должно быть так сложно.

Любые намеки были бы великолепны!

Ответы [ 5 ]

28 голосов
/ 09 февраля 2014

Для структуры объекта 6.0 следующий код дает текущую ConnectionString.

context.Database.Connection.ConnectionString
8 голосов
/ 01 сентября 2012

Для людей, не использующих EF 4.1, вот самый простой способ сделать это из известных мне:

using System.Data.EntityClient;

public static string GetConnectionString(ObjectContext context)
{
    return ((EntityConnection)context.Connection).StoreConnection.ConnectionString;
}
3 голосов
/ 06 июля 2011

Я получаю соединение с БД, как это

 var connection = (SqlConnection)_context.Database.Connection;

Затем из соединения вы получаете ConnectionString и другую необходимую вам информацию

2 голосов
/ 08 мая 2017

Для EF Core используйте:

context.Database.GetDbConnection().ConnectionString;
1 голос
/ 05 июля 2011

В файле web.config должен присутствовать элемент connectionString, указанный в контексте:

<configuration>
     <connectionStrings>
          <add name="MyAppConfigConnectionStringPropertyHere"
               providerName="System.Data.SqlClient"
               connectionString="Data Source...." />
     </connectionStrings>
</configuration>
...