gpt4 book ai didi

entity-framework - Entity Framework :DbContext并设置ProviderName

转载 作者:行者123 更新时间:2023-12-03 09:10:42 25 4
gpt4 key购买 nike

当从DbContext派生并使用无参数构造函数时,它将从web.config加载连接字符串。您还可以选择使用其他DbContext构造函数之一显式指定connectionString。

我的特殊情况要求不能在web.config中指定连接字符串,因为服务器/用户名和密码的位置是在运行时确定的。轻松解决对吗?只需使用上述构造函数来指定连接字符串?错误。

问题是,当您使用上述构造函数指定连接字符串时,它仍然尝试使用默认提供程序,因此,如果您使用的是我这样的一个或多个非标准提供程序,它将无法正常工作。

我确定我可以在web.config中更改默认提供程序,但是我想使用多个提供程序,所以不会这样做。

我看到的唯一可能的解决方法是使用ObjectContext而不是DbContext,这似乎允许您指定提供程序以及数据库连接字符串。

还有其他方法吗?我的解决方法是否合理?

我相信我也可以从ObjectContext实例创建DbContext。

最佳答案

手动创建DbConnection,并将其传递给DbContext构造函数,如下所示:

var conn = DbProviderFactories.GetFactory("MY_CONN_PROVIDER").CreateConnection();
conn.ConnectionString = "MY_CONN_STR";

new DbContext(conn, true);

注意第二个参数 bool contextOwnsConnectiontrue。由于您无需在其他地方重用连接,因此可以让上下文管理该连接,并在需要时对其进行 Dispose()编码。

关于entity-framework - Entity Framework :DbContext并设置ProviderName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com