C# ';System.Data.IDbConnection';至';System.Data.SqlClient.SqlConnection';
我在尝试编译上述代码时遇到以下错误 无法将类型“System.Data.IDbConnection”隐式转换为 “System.Data.SqlClient.SqlConnection”。存在显式转换 (你错过了演员阵容吗?)C# ';System.Data.IDbConnection';至';System.Data.SqlClient.SqlConnection';,c#,.net,C#,.net,我在尝试编译上述代码时遇到以下错误 无法将类型“System.Data.IDbConnection”隐式转换为 “System.Data.SqlClient.SqlConnection”。存在显式转换 (你错过了演员阵容吗?) 错误消息是不言自明的。您的方法采用IDBTransaction,它的Connection属性返回IDBConnection,这是所有连接类型都实现的接口,而不仅仅是SqlConnection 您可以将其强制转换为SqlConnection,但如果有人试图将您的方法用于不同
错误消息是不言自明的。您的方法采用
IDBTransaction
,它的Connection
属性返回IDBConnection
,这是所有连接类型都实现的接口,而不仅仅是SqlConnection
您可以将其强制转换为SqlConnection
,但如果有人试图将您的方法用于不同的事务类型,则很容易出错,因为这会导致运行时异常
但是您可以使用Connection.CreateCommand
:
protected override IDbCommand GetDbCommand(string key, IDbTransaction transaction)
{
if (transaction == null)
{
return base.GetDbCommand(key);
}
return new SqlCommand { Connection = transaction.Connection, Transaction = transaction };
}
protected override IDbCommand GetDbCommand(string key, IDbTransaction transaction)
{
if (transaction == null)
{
return base.GetDbCommand(key);
}
var cmd = transaction.Connection.CreateCommand();
cmd.Transaction = transaction;
return cmd;
}