存储值的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();
}
我不知道你认为你在用这两个语句做什么,但可能不是你想象的那样。
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);
}