Ответ 1
Ну, если оба могут использовать один и тот же Connection String
, то я думаю, что они оба SqlConnection
.
Попробуйте это вместо:
var connection = rep.Database.Connection as SqlConnection;
У меня есть метод расширения на DbContext
, где я хочу сделать SqlBulkCopy
. Поэтому мне нужно a SqlConnection
. Соединение из DbContext происходит от типа DbConnection
.
Среди нескольких других вещей я пробовал это:
var connection = new SqlConnection( dbContext.Database.Connection.ConnectionString);
Проблема в том, что пароль отсутствует (возможно, из соображений безопасности).
Еще одна вещь, которую я пробовал, - это повышение:
var bulk_copy = new SqlBulkCopy( (SqlConnection)dbContext.Database.Connection );
Это фактически предполагает, что DbConnection является SqlConnection. В этом конкретном случае это уже идет не так. Я использую MVC MiniProfiler, который завершает соединение в EFProfiledDbConnection
. EFProfiledDbConnection не наследуется от SqlConnection.
Любые другие идеи? Спасибо заранее!
Ну, если оба могут использовать один и тот же Connection String
, то я думаю, что они оба SqlConnection
.
Попробуйте это вместо:
var connection = rep.Database.Connection as SqlConnection;
Одним из возможных способов решения этой задачи было бы добавить Persist Security Info=true
к вашей строке соединения.
Единственным способом, который я обнаружил до сих пор, является использование библиотеки System.Configuration:
var sqlConnString = ConfigurationManager.ConnectionStrings["your_conn_string_name"].ConnectionString;
var bulkCopy = new SqlBulkCopy(sqlConnString);
У меня была аналогичная проблема с ProfiledConnection (HibernatingRhinos.Profiler.Appender.ProfiledDataAccess.ProfiledConnection)
и мне нужно было SqlConnection, это сделало трюк:
ProfiledConnection profiledConnection = dbContext.Database.Connection as ProfiledConnection;
SqlConnection sqlConnection = (SqlConnection)profiledConnection.Inner;
Вы можете проверить тип dbContext.Database.Connection
. Если это EFProfiledDbConnection
, вы можете получить его свойство WrappedConnection
, которое возвращает DbConnection
. Это SqlConnection
, если вы используете Sql Server.