gpt4 book ai didi

c# - DbProviderFactory 代码与用于在 ADO.Net 中创建 SqlConnection 的代码的关系

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:10 27 4
gpt4 key购买 nike

当我在 ADO.Net 中实例化一个 SqlConnection 对象时,这段代码会导致执行相应的 DbProviderFactory 代码吗?所以当 block 2 中的代码被执行时,我们实际上最终执行了 block 1 中的代码。但我不确定这是不是真的。

代码块 1 - 使用 DbProviderFactory 方法实例化 SqlConnection

DbProviderFactory factory =
DbProviderFactories.GetFactory(providerName);

connection = factory.CreateConnection();
connection.ConnectionString = connectionString;

代码块 2 - 使用标准 ADO.Net 代码实例化 SqlConnection

SqlConnection con = new SqlConnection(connectionString);

最佳答案

我查看了一些 .net Framework 程序集 并发现了以下内容

DbProviderFactories.GetFactory(providerName) 将根据给定的 providerName 返回一个 Factory 对象。假设 providerName 表示一个 SQL 提供程序,那么我们将得到一个 SqlClientFactory

之后 factory.CreateConnection() 将被调用。在这种情况下 SqlClientFactory.CreateConnection() 将被调用,实现为

public override DbConnection CreateConnection()
{
return new SqlConnection();
}

我认为您问题的答案是调用工厂方法将调用提供者特定类的方法,而不是相反!

关于c# - DbProviderFactory 代码与用于在 ADO.Net 中创建 SqlConnection 的代码的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230159/

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