从DbConnection获取SqlConnection

Dir*_*oer 24 c# sql entity-framework connection-string mvc-mini-profiler

我有一个扩展方法在DbContext我想要做的地方SqlBulkCopy.因此我需要一个SqlConnection.来自DbContext的连接来自类型DbConnection.在其他一些事情我试过这个:

var connection = new SqlConnection( dbContext.Database.Connection.ConnectionString);
Run Code Online (Sandbox Code Playgroud)

问题是密码丢失(可能出于安全原因).

我尝试的另一件事是向上转换:

var bulk_copy = new SqlBulkCopy( (SqlConnection)dbContext.Database.Connection );
Run Code Online (Sandbox Code Playgroud)

这实际上假设DbConnection是一个SqlConnection.在这个非常具体的案例中,它已经出错了.我正在使用MVC MiniProfiler将连接包装成一个EFProfiledDbConnection.EFProfiledDbConnection不从SqlConnection继承.

还有其他想法吗?提前致谢!

hai*_*770 18

好吧,如果两者都可以共享,Connection String那么我猜他们都是SqlConnection.

试试这个:

var connection = rep.Database.Connection as SqlConnection;
Run Code Online (Sandbox Code Playgroud)

  • 对于任何未来的浏览器来看这个问题.虽然这个答案对OP不起作用,但一般来说DbConnection通常是SqlConnection的一个实例.因此,您应该检查并查看这是否适用于您的特定实例. (10认同)

Wik*_*hla 7

解决此问题的一种可能方法是添加Persist Security Info=true到您的连接字符串.