存储值的C#实体框架返回null异常

时间:2013-06-24 03:33:06

标签: c# database entity-framework crud

这是我的代码:

        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();
    }

1 个答案:

答案 0 :(得分: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);
}