2013-06-24 66 views
0

這裏是我的代碼:C#實體框架存儲的值返回null例外

 protected void btnShow_Click(object sender, EventArgs e) 
    { 

     foreach (Control control in Panel1.Controls) 
     { 
      var textBox = control as TextBox; 
      if (textBox != null) 
      { 
       if (string.IsNullOrEmpty(textBox.Text)) 
       { 

       textBox.Style["visibility"] = "hidden"; 
       } 

       // textBox.Enabled = false; 

       var id = from t in textBox.Text 
          where t != null 
          select textBox.ID; 

       var text = from t in textBox.Text 
          where t != null 
          select t; 

       foreach (var x in id) 
       { 
        Model.crossword insert = new Model.crossword(); 
        insert.TextBoxID = x;      
        daoCrossword.Insert(insert); 
       } 

       foreach (var a in text) 
       { 
        Model.crossword insert = new Model.crossword(); 
        insert.TextBoxValue = a.ToString(); 
        daoCrossword.Insert(insert); 
       } 
       daoCrossword.Save();     
      }    
     } 
    } 

daoCrossword是有它的CRUD代碼的類文件,我使用EF要做到這一點,我是新來的這一點,給我一個錯誤:System.NullReferenceException:對象引用未設置爲對象的實例。

CRUD類文件(部分):

public void Insert(Model.crossword exe) 
    { 
     context.crosswords.AddObject(exe); 
    } 
public void Save() 
    { 
     context.SaveChanges(); 
    } 
+0

你在哪裏得到錯誤?你嘗試過調試嗎?你的變量在錯誤發生時包含什麼值? –

+0

我做過調試,x和a包含值,daoCrossword.Save()中的錯誤行;和context.crosswords.AddObject(exe);這是我的CRUD類文件 – user2376998

+0

我已經編輯在上面,包括我的類文件 – user2376998

回答

0

我不知道你在想什麼你與這兩個語句做,但它可能不是你認爲它是。

var id = from t in textBox.Text 
     where t != null 
     select textBox.ID; 

var text = from t in textBox.Text 
      where t != null 
      select t; 

然後,您的foreach語句真的沒有意義,因爲您只會在集合中有一個項目。看起來好像你只是在文本框中存在某些東西時才保存數據,爲此你應該只做一個簡單的if語句。

接下來,在每個的foreach創建新的填字遊戲的對象,但你只能在一個指定的ID,並在其他文本..這是也可能不是你想要的。更可能的是,你只是想這樣做:

if (!string.IsNullOrEmpty(textbox.Text)) 
{ 
    Model.crossword insert = new Model.crossword(); 
    insert.TextBoxID = textbox.ID;      
    insert.TextBoxValue = textbox.Text; 
    daoCrossword.Insert(insert); 
} 
+0

我有很多文本框,並在2個LINQ語句是讓文本框和文本框的id的值,因爲我要去把它們保存到數據庫 – user2376998

+0

@ user2376998 - 是的,你的foreach所控制對象獲得所有這些文本框。 linq的陳述是不必要的,不會做你認爲他們做的事情。正如所寫,它們只能在單個文本框控件上操作。 –

+0

呵呵確定這個foreach控件。但我想你的代碼,但它仍然給了我同樣的錯誤 – user2376998