gpt4 book ai didi

.net - .net DbProviderFactory 线程安全吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:13 25 4
gpt4 key购买 nike

我正在重构一些基于 DbProviderFactory 的旧代码利用连接池,但我遇到了一个简单的问题: DbProviderFactories.GetFactory() 返回的对象是线程安全?

现在的代码是这样的:

DbProviderFactory factory = DbProviderFactories.GetFactory("Provider String from config");
var connection = factory.CreateConnection();
connection.ConnectionString = "connection string from config";

等等,但这是每个线程完成一次。显然不是我想要的。

我想知道我是否可以在任何地方使用“工厂”对象?我可以在同一个线程的不同线程中创建多个连接吗 DbProviderFactory目的?我可以创建 DbAdapter还是来自同一个工厂的类(class)?

虽然很愚蠢,但即使是具体子类的 MSDN 文档也没有说明您是否可以这样做。例如 msdn doc对于 SqlClientFactory对于 CreateDataAdapter()方法没有说明它是否是线程安全的。互联网上的一些不同指南只是打开一个 SqlConnection 的实例。它会做线程池,这很好,但如果你这样做:

SqlConnection connection = new SqlConnection("my connection string);
DbDataAdapter adapt = DbProviderFactories.GetFactory(connection).CreateDataAdapter();

那是线程安全的吗? 那些工厂有多少?那是什么 GetFactory有跨线程返回的方法吗?总是同一个对象?或不?我正在修改的现有代码使用 DbDataAdapter很重,所以我也不想改变所有这些。

那么获取工厂并从多个线程使用它是线程安全的吗?

最佳答案

MSDN 说:-

Thread Safety:

Any public static (Shared in Visual Basic) members of this type arethread safe. Any instance members are not guaranteed to be threadsafe.

关于.net - .net DbProviderFactory 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526393/

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