47

Entity Framework 5 を使用していますが、実行する必要があるいくつかのカスタム SQL には、アプリケーションから通常のデータベース接続も使用する必要があります。

したがって、この接続を処理する DatabaseAccess クラスを作成しています。Entity Framework 接続文字列を確認して、接続文字列を設定する方法はありますか?

そう:

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

Entity Frameworkをチェックして構築できますか?

4

10 に答える 10

97

次を使用して、EF で使用される接続文字列を取得できます。

MyDbContext.Database.Connection.ConnectionString

または、マークが言うように、sqlconnection でコンテキストを初期化できます

于 2012-10-22T01:53:39.990 に答える
42

EF 5、EF 6、および EF Core 1/EF 7 で接続文字列を取得する方法は次のとおりです。

//Entity Framework 5
myContext.Database.Connection.ConnectionString
//Entity Framework 6
myContext.Database.Connection.ConnectionString
//Entity Framework Core 1
myContext.Database.GetDbConnection().ConnectionString

詳細については、http://nodogmablog.bryanhogan.net/2016/04/entity-framework-checking-the-connection-string-of-your-context/を参照してください。

于 2016-04-13T14:45:23.450 に答える
19

はい、できます。

3つのオプションについては、こちらを参照してください。

1 - それぞれに個別の接続文字列を使用します

2 - エンティティ オブジェクトから抽出します (これが必要だと思います)

3 - エンティティ オブジェクトを使用してカスタム SQL を実行する

番号 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;
}
于 2013-02-25T16:44:32.050 に答える
11

EF3 でも EntityConnectionStringBuilder を使用できます。

EntityConnectionStringBuilder conn = 
    new EntityConnectionStringBuilder(DBEntities.dbConnection);
SqlConnection s = new SqlConnection(conn.ProviderConnectionString);
于 2015-02-18T14:13:42.107 に答える
10

EF DbContext で SqlConnection を使用できるということですか?

DbContext クラスには、SqlConnection を渡すことができるコンストラクターがあり、それを所有しているかどうかを EF に伝えます。

var YourContext = new YourContext(SqlConnection, true);
于 2012-10-22T01:23:38.717 に答える
5

私もこの問題を抱えていました。問題を解決するには、これを行うことができます:

        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();
于 2016-10-10T16:47:35.233 に答える
4

それが役に立てば幸い..

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

    public CommonService(ApplicationDbContext applicationDbContext)
    {
        _applicationDbContext = applicationDbContext;
        connectionString = _applicationDbContext.Database.GetDbConnection().ConnectionString;
    }
于 2018-02-22T12:24:08.107 に答える