由数据集创建的GetRows方法返回null
问题描述:
我正在使用SQLite和数据集。在我的数据库中,我有相互参照的表格。让我们称他们为表1,表2,...以下是我作为一个的exaple使用EER图的表示:由数据集创建的GetRows方法返回null
我从数据集中的数据在Table1Row和对象的形式如果只能有一个对表3的引用,则会生成非常有用的生成方法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;
}
答
我相信我已经找到了解决办法。您需要使用相同的数据集填充其他表,而不使用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
'GetRows方法创建需要的所有数据通过数据集返回null'我想你可能忘记在你的文章中包含该代码。 – mjwills
不,我只是没有发现该部分非常有用,因为标准的GetData方法不起作用,要么我不认为这是问题。我认为更重要的是整个方法都是错误的,或者在获取数据后我缺少额外的步骤 – Lavandysh