DbContext
にExtensionメソッドがあり、SqlBulkCopy
を実行します。したがって、SqlConnection
が必要です。 DbContextからの接続は、タイプDbConnection
からのものです。他のいくつかのものの中で私はこれを試しました:
var connection = new SqlConnection( dbContext.Database.Connection.ConnectionString);
問題は、パスワードが欠落していることです(おそらくセキュリティ上の理由から)。
私が試した別のことはアップキャストです:
var bulk_copy = new SqlBulkCopy( (SqlConnection)dbContext.Database.Connection );
実際には、DbConnectionはSqlConnectionであると想定しています。この非常に特殊なケースでは、すでに問題が発生しています。接続をEFProfiledDbConnection
にラップするMVC MiniProfilerを使用しています。 EFProfiledDbConnectionはSqlConnectionを継承しません。
他のアイデアはありますか?前もって感謝します!
まあ、両方が同じを共有できる場合Connection String
それでは、どちらもSqlConnection
だと思います。
代わりにこれを試してください:
var connection = rep.Database.Connection as SqlConnection;
これを回避する可能な方法の1つは、接続文字列にPersist Security Info=true
を追加することです。
ProfiledConnection(HibernatingRhinos.Profiler.Appender.ProfiledDataAccess.ProfiledConnection)で同様の問題が発生しました
そして私が必要としたのはSqlConnectionでした、これはトリックをしました:
ProfiledConnection profiledConnection = dbContext.Database.Connection as ProfiledConnection;
SqlConnection sqlConnection = (SqlConnection)profiledConnection.Inner;
これまでに見つけた唯一の方法は、System.Configurationライブラリを使用することです。
var sqlConnString = ConfigurationManager.ConnectionStrings["your_conn_string_name"].ConnectionString;
var bulkCopy = new SqlBulkCopy(sqlConnString);
dbContext.Database.Connection
のタイプを確認できます。 EFProfiledDbConnection
の場合は、WrappedConnection
プロパティを取得してDbConnection
を返すことができます。 SQL Serverを使用している場合、これはSqlConnection
です。