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

本文关键字:返回 null 异常 框架 实体 存储 | 更新日期: 2023-09-27 18:19:32

这是我的代码:

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

daoCrosword是一个类文件,其中包含CRUD代码,我使用EF来完成此操作,我对此并不熟悉,它会给我一个错误:System.NullReferenceException:对象引用未设置为对象的实例。

CRUD类文件(部分):

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

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

我不知道你认为你在用这两个语句做什么,但可能不是你想象的那样。

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中创建新的填字游戏对象,但只在其中一个foreach中分配id,在另一个forech中分配文本。。这可能也不是你想要的。更有可能的是,你只想这样做:

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