2015-02-10 52 views
1

我目前正試圖在SQL上做得更好,此刻我正在處理與數據庫交互的小型Windows Forms程序。我正在使用實體框架來實現這一點。我遇到了一個我自己無法解決的問題。我試圖用數據庫表中的項填充ListBox。爲此,我的意圖是在Form.Load期間訪問表中的所有entrys,然後將它們添加到ListBox。我遇到的問題是,由於某種原因,當我將其放入Form.Load函數時,SQL代碼似乎無法執行。如果我創建一個按鈕並在click事件中使用它,它會按預期工作,這就是爲什麼我有點困惑。該代碼是如此簡單:無法在Form.Load中使用sql查詢

這個工程:

private void btnAdd_Click(object sender, EventArgs e) 
    { 
     dbConnection db = new dbConnection(); 

     var heroes = db.Hero.SqlQuery("Select * from Hero").ToList(); 
    } 

這不起作用:

private void AddMatchForm_Load(object sender, EventArgs e) 
    { 
     dbConnection db = new dbConnection(); 

     var heroes = db.Hero.SqlQuery("Select * from Hero").ToList(); 
    } 
+1

一旦你擁有了「英雄」,你會怎麼做?據我所見,當它超出範圍時將會丟失(除非你缺少一些代碼) – Andrew 2015-02-10 14:13:21

+1

你是什麼意思的「不工作」?你有一些例外嗎? – 2015-02-10 14:14:02

+1

你試過在load evnt上放一個'breakpoint'嗎? – Rohit 2015-02-10 14:14:10

回答

0

的SQL語句看起來不錯。但是你有沒有調用AddMatchForm_Load?僅僅因爲你將它命名爲「_Load」並不意味着表單實際上與它綁定。即使你是,你也沒有對你的「英雄」變量做任何事情。所以一旦你離開AddMatchForm_Load方法就會消失。

+0

我試過放置一箇中斷點,它確實被調用。我在那裏寫的其他代碼按預期工作。在我提供的小代碼片段中,我什麼也沒做,但是我嘗試在SQL語句中添加隨機字符,這應該會產生一個異常,但不會這樣做。如果我在click事件中添加相同的隨機字符,確實會得到該異常 – 2015-02-10 14:19:39