Подтвердить что ты не робот

Получить строку подключения Entity Framework

Мы используем Entity Framework 5, но у нас есть требование, чтобы ТАКЖЕ использовать обычное соединение с базой данных из приложения для некоторого настраиваемого SQL, который нам нужно выполнить.

Итак, я создаю класс DatabaseAccess, который обрабатывает это соединение. Есть ли способ, которым я могу заполнить строку подключения, проверив строку подключения Entity Framework?

Итак:

SqlConnection cnn;
connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password"

Могу ли я создать это из проверки Entity Framework?

4b9b3361

Ответ 2

Вы можете получить строку соединения, используемую EF, используя следующее:

MyDbContext.Database.Connection.ConnectionString

Или, как отмечают, вы можете инициализировать контекст с помощью sqlconnection

Ответ 4

Да, вы можете.

Смотрите здесь для 3 вариантов.

1 - используйте отдельную строку соединения для каждого

2 - извлеките его из объекта объекта (это то, что я думаю, что вы хотите)

3 - используйте объект entity для выполнения пользовательского SQL

Здесь, как сделать nr 2:

using System.Data.EntityClient;
using System.Data.SqlClient;
...
private string GetADOConnectionString()
{
    SalesSyncEntities ctx = new SalesSyncEntities(); //create your entity object here
    EntityConnection ec = (EntityConnection)ctx.Connection;
    SqlConnection sc = (SqlConnection)ec.StoreConnection; //get the SQLConnection that your entity object would use
    string adoConnStr = sc.ConnectionString;
    return adoConnStr;
}

Ответ 5

даже в EF3 вы можете использовать EntityConnectionStringBuilder.

EntityConnectionStringBuilder conn = 
    new EntityConnectionStringBuilder(DBEntities.dbConnection);
SqlConnection s = new SqlConnection(conn.ProviderConnectionString);

Ответ 6

У меня тоже была эта проблема, чтобы решить эту проблему:

        SqlConnection con = context.Database.Connection as SqlConnection;
        SqlCommand command = new SqlCommand(sql, con);
        con.Open();

        SqlDataReader reader = command.ExecuteReader();
        while (reader.HasRows)
        {
            while (reader.Read())
            {
                //read your fields
            }

            reader.NextResult();
        }

        con.Close();

Ответ 7

Надеюсь, это поможет..

    private readonly ApplicationDbContext _applicationDbContext;
    string connectionString = string.Empty;

    public CommonService(ApplicationDbContext applicationDbContext)
    {
        _applicationDbContext = applicationDbContext;
        connectionString = _applicationDbContext.Database.GetDbConnection().ConnectionString;
    }

Ответ 8

Вот общий способ получения строки подключения:

   public string GetConnString<T>(T ent)
            where T : ObjectContext
        {
            EntityConnection ec = (EntityConnection)ent.Connection;
            SqlConnection sc = (SqlConnection)ec.StoreConnection;
            return sc.ConnectionString;
        }

Тогда использовать это будет:

 MyEntities ent = new MyEntities();
 String ConnString = GetConnString(ent);

Ответ 9

//Entity Framework 5

myContext.Database.Connection.ConnectionString

//Entity Framework 6

myContext.Database.Connection.ConnectionString

//Entity Framework Core 1

myContext.Database.GetDbConnection().ConnectionString