2015-10-06 52 views
1

以下是對象和.txt文件的示例類,我使用filehelpers創建此類,然後使用FileHelpers讀取.txt文件,並將此文件轉換爲這些對象,然後將它們放入List中。如何將數據庫中的行映射到對象列表中?

.txt文件:

1122233 
4455566 

實施例類:

[FixedLengthRecord(FixedMode.AllowLessChars)] 
public class Example 
{ 

    [FieldFixedLength(2)] 
    public string first; 

    [FieldFixedLength(3)] 
    public string second; 

    [FieldFixedLength(2)] 
    public string third; 
} 

與filehelpers讀該給我Example.The第一Example.first值的2個對象是 '11' 等 我通過將List轉換爲DataTable並使用SqlBulkCopy將數據推送到數據庫中。這一切順利。

數據庫中的表只包含3列(varchar)與列名;第一,第二和第三。

問題是當我嘗試將數據從數據庫中獲取背部並將其映射回一個名單,我用下面的代碼(使用小巧玲瓏)本:

IDbConnection connection = new SqlConnection(connectionString); 
var rows = connection.Query<Example>("select * from examplesTable"); 
     foreach (Example e in rows) 
     { 
      examples.Add(e); //List<Example> examples 
     } 

這將返回正確的金額的行,但是如果我嘗試從對象中獲取數據,它將包含空數據。我無法弄清楚我做錯了什麼。

+0

「但是,如果我嘗試從對象中獲取數據」 - 該代碼的哪一部分引用? – Hughnited

+0

@Hughnited我測試這與添加MessageBox.Show(e.First);到foreach循環,但它什麼也沒有顯示(空窗口)。我也嘗試將該列表轉換爲DataTable並將其推回數據庫,結果是它推送了正確數量的行,但數據全爲空。 – RedZerg

+0

在foreach中:examples.Add(e); MessageBox.Show(e.First); //返回空白窗口。 – RedZerg

回答

1

我會檢查你有SQL批量插入之前正確加載的數據,然後,你是不是從批量插入得到任何錯誤。

SQL Management Studio中的表是否有正確的數據?

如果您有正確的數據嘗試只讀作爲數據表來查看返回的內容,因爲這將是對象值而不是特定類型。

+0

感謝您的回答。是的,數據加載正確。我通過將它作爲DataTable讀取來嘗試您的提示,並且它工作正常!它顯示所有正確的數據。但我需要一個數據對象的列表,所以我試圖將該數據錶轉換爲一個列表,並再次顯示所有空值。:( – RedZerg

+0

我修正了它,我轉換爲列表很糟糕。感謝您的想法閱讀它作爲數據表! – RedZerg

1

不可能只寫foreach (Example e in rows),你應該爲Example創建構造函數,它將根據每行的數據創建一個Example對象。它看起來有點像

foreach (DaraRow r in rows) 
     { 
      Example e = new Examaple(r["First"],r["Second"]); 
      examples.Add(e); //List<Example> examples 
     } 
+0

謝謝我會試試這個。 – RedZerg

相關問題