我正在Windows CE 5.0下的Compact Framework 3.5中编写这段代码来处理两个不同的数据库:
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlServerCe;
using System.Data.Common;
public myClass
{
private DbConnection dbCn;
private DbCommand dbCmd;
public void myClass(bool ce)
{
if (ce)
{
dbCn = new SqlCeConnection();
dbCmd = new SqlCeCommand();
}
else
{
dbCn = new SqlConnection(); // COMPILER ERROR Cannot implicitly convert type 'System.Data.SqlClient.SqlConnection' to 'System.Data.Common.DbConnection'
dbCmd = new SqlCommand();// COMPILER ERROR Cannot implicitly convert type 'System.Data.SqlClient.SqlCommand' to 'System.Data.Common.DbCommand'
}
}
为什么它无法将SqlXX转换为DbXX ???来自MSDN SqlXX是DbXX的孩子!顺便说一句,SqlCeXX没问题。 我不能使用cf。
中缺少的DbPoviderfactory由于
答案 0 :(得分:1)
你要做的是Covariance and Contravariance in Generics,但直到.NET 4.0才出现。
[更新] 从[DbConnection]转换为[SqlConnection]似乎可能会遗漏一些参数,因此Microsoft不允许进行简单的转换。
如果你真的想要完成它,请在SO上查看这个帖子并提供一些很好的操作方法代码: