类型';System.Data.Common.DbTransaction';在未被引用的程序集中定义.必须添

本文关键字:集中 程序集 程序 定义 Common Data System DbTransaction 类型 引用 | 更新日期: 2023-09-27 18:03:34

欢迎。我正试图在Windows mobile 6上编写一个连接到Firebird 2.5.2数据库的应用程序(使用visual studio 2008和Forms(。我写了一段代码:

  static public void Execute(FbTransaction tr, string sql, bool commit)
    {
        FbConnection cn = null;
        FbCommand cmd = null;
        if (tr != null)
        {
            cmd = new FbCommand(sql, tr.Connection, tr);
        }
        else
        {
            cn = new FbConnection(ConnString());
            cmd = new FbCommand(sql, cn);
        }
        if (cmd.Connection.State == ConnectionState.Closed)
        {
            cmd.Connection.Open();
        }
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        if (cn != null)
        {
            cn.Close();
            cn.Dispose();
        }
    }

我在第1条车道上出现错误(突出显示执行(

错误1在未引用的程序集。必须添加对程序集的引用'System.Data,版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089'。

我的参考资料中添加了System.Data 2.0.0.0版本。如果有任何帮助,我将不胜感激。


我找到了解决办法。对于那些未来将面临类似问题的人,以下是我的做法:要让它在VS2008(.net 3.5(和firebird 2.5.2(目前最新(中使用64位windows窗体,您需要做的第一件事就是下载firebird EMBEDED win x 64包http://www.firebirdsql.org/en/firebird-2-5-2-upd1/

接下来,转到.NET提供程序的源代码版本,对我来说,这是一个(如果你在VS2010或更高版本中使用代码,请尝试更新的版本(http://sourceforge.net/projects/firebird/files/firebird-net-provider/2.5.2/

打开它,然后在配置管理器中,在x64下编译它。(记得添加特定.net版本的System.Data参考,我想我使用了2.0.0.0(

现在,创建您想要的winform项目,并包括步骤1中下载的嵌入式Firebird包中的所有.dll(将现有项添加到项目的根目录(

添加对您新编译的FirebirdSql.dll的引用,我在''NETProvider-2.5.2-src''NETProvider''source''FirebirdSql''Data''bin''x64''Debug''FirebirdSql.Data.FirebirdClient.dll

享受吧。奖金->

到本地Firebird服务器的字符串路径很棘手,所以以下是对我有效的

     string Firebird_path = "User=SYSDBA;Password=masterkey;" +
           "Database=localhost:L:''DBS''DBS.FDB; " +
           "DataSource=localhost;Charset=NONE;";

类型';System.Data.Common.DbTransaction';在未被引用的程序集中定义.必须添

您是否在项目中引用了Firebird.NET提供程序?

你可以在这里找到它。它也可以作为NuGet包添加。

FbTransaction实现了DbTranaction接口。这意味着,如果在代码中使用FbTransaction,那么在运行时也需要加载此接口,因此需要引用程序集。