当您从 DbContext 派生并使用无参数构造函数时,它将从 web.config 加载连接字符串。您还可以选择使用其他 DbContext 构造函数之一显式指定 connectionString。
我的特殊情况表明连接字符串不能在 web.config 中指定,因为服务器/用户名和密码的位置是在运行时确定的。容易修复对吧?只是使用上面提到的构造函数来指定连接字符串?错误的。
问题是,当您使用所述构造函数指定连接字符串时,它仍会尝试使用默认提供程序,因此,如果您像我一样使用一个或多个非标准提供程序,它将无法工作。
我确定我可以更改 web.config 中的默认提供程序,但我想使用多个提供程序,所以这不会。
我能看到的唯一可能的解决方法是使用 ObjectContext 而不是 DbContext,这似乎允许您指定提供程序以及数据库连接字符串。
还有其他方法吗?我的解决方法相当合理吗?
我相信我也可以从 ObjectContext 实例创建一个 DbContext。