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