SqlConnection DBConnection Windowsce

时间:2013-04-19 10:20:12

标签: compact-framework windows-ce dbconnection mysqlconnection

我正在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

由于

1 个答案:

答案 0 :(得分:1)

你要做的是Covariance and Contravariance in Generics,但直到.NET 4.0才出现。

[更新] [DbConnection]转换为[SqlConnection]似乎可能会遗漏一些参数,因此Microsoft不允许进行简单的转换。

如果你真的想要完成它,请在SO上查看这个帖子并提供一些很好的操作方法代码:

C# DbConnection cast to SqlConnection