当您从DbContext派生并使用无参数构造函数时,它将从web.config加载连接字符串.您还可以选择使用其他DbContext构造函数之一显式指定connectionString.
我的特殊情况表明不能在web.config中指定连接字符串,因为服务器/用户名和密码的位置是在运行时确定的.轻松修复吧?只需使用上面提到的构造函数来指定连接字符串?错误.
问题是,当您使用所述构造函数指定连接字符串时,它仍会尝试使用默认提供程序,因此如果您使用一个或多个非标准提供程序,就像我一样,它将无法工作.
我确定我可以在web.config中更改默认提供程序,但我想使用多个提供程序,所以这不会.
我能看到的唯一可能的方法是使用ObjectContext而不是DbContext,这似乎允许您指定提供程序以及数据库连接字符串.
还有其他办法吗?我的解决方法是否合理?
我相信我也可以从ObjectContext实例创建一个DbContext.
hai*_*770 36
DbConnection
手动创建并将其传递给DbContext
构造函数,如下所示:
var conn = DbProviderFactories.GetFactory("MY_CONN_PROVIDER").CreateConnection();
conn.ConnectionString = "MY_CONN_STR";
new DbContext(conn, true);
Run Code Online (Sandbox Code Playgroud)
注意第二个参数bool contextOwnsConnection
是true
.由于您不在其他地方重新使用该连接,因此它允许上下文Dispose()
在需要时管理连接.
归档时间: |
|
查看次数: |
10925 次 |
最近记录: |