我使用SQLite和数据集。在我的数据库中,我有相互引用的表。我们称之为Table1,Table2,......这里是EER图表的表示,我将用它作为一个例子:
我以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;
}
答案 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中不需要的所有数据。