2017-08-16 73 views
0

我正在使用SQLite和數據集。在我的數據庫中,我有相互參照的表格。讓我們稱他們爲表1,表2,...以下是我作爲一個的exaple使用EER圖的表示:由數據集創建的GetRows方法返回null

enter image description here

我從數據集中的數據在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; 
    } 
+0

'GetRows方法創建需要的所有數據通過數據集返回null'我想你可能忘記在你的文章中包含該代碼。 – mjwills

+0

不,我只是沒有發現該部分非常有用,因爲標準的GetData方法不起作用,要麼我不認爲這是問題。我認爲更重要的是整個方法都是錯誤的,或者在獲取數據後我缺少額外的步驟 – Lavandysh

回答

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