由dataset创建的GetRows方法返回null

时间:2017-08-16 13:15:40

标签: c# ado.net dataset

我使用SQLite和数据集。在我的数据库中,我有相互引用的表。我们称之为Table1,Table2,......这里是EER图表的表示,我将用它作为一个例子:

enter image description here

我以Table1Row的形式从数据集中获取数据,如果您只能对Table3有一个引用,则该对象具有非常有用的生成方法Table2Row[] table1Row.GetTable2Rows()和生成的Table3Row参数。但是如果我调用这个方法,我得到的结果是一个空集合,参数为null。所有其他属性都是正确的,我确信表格填写正确。

我的选择查询非常简单:

SELECT * FROM table1 WHERE key = @key;

但即使我使用预定义的getData,问题仍然存在。之后我使用TableAdapter获取正确的行:

Table1DataTable table1DataTable = table1TableAdapter.GetDataByKey();
return table1DataTable.FindByKey(key);

很难找到解决这个问题的方法,因为生成的方法的名称总是不同的。

感谢您的帮助

编辑: 这是生成的方法:

    public virtual DataSet.Table1DataTable GetDataByKey(long key) {
        this.Adapter.SelectCommand = this.CommandCollection[1];
        this.Adapter.SelectCommand.Parameters[0].Value = ((long)(key));
        DataSet.Table1DataTable dataTable = new DataSet.Table1DataTable();
        this.Adapter.Fill(dataTable);
        return dataTable;
    }

1 个答案:

答案 0 :(得分:0)

我相信我找到了解决方案。您需要使用相同的数据集填充其他表,而不是使用getData方法。然后就像这样:

        DataSetTableAdapters.Table1TableAdapter table1TableAdapter = new DataSetTableAdapters.Table1TableAdapter ();
        table1TableAdapter.FillByKey(dataset.Table1,key);

        DataSetTableAdapters.Table2TableAdapter table2TableAdapter = new DataSetTableAdapters.Table2TableAdapter();
        table2TableAdapter.Fill(dataset.Table2);

        DataSetTableAdapters.Table3TableAdapter table3TableAdapter = new DataSetTableAdapters.Table3TableAdapter();
        table3TableAdapter.Fill(dataset.Table3);

        return dataset.Table1.FindBykey(key);

现在我所要做的就是优化它,这样我就无法获得表2和表3中不需要的所有数据。