linq怎么给外键赋值呢?
QuestionsLibraryEntities ques = new QuestionsLibraryEntities();
Csw_ExaminationPaper paper = new Csw_ExaminationPaper(); paper.Csw_ExaminationPaperType.Ept_Code = int.Parse(Ept_Code);//这行代码报未将对象引用设置到对象的实例,就是说paper.Csw_ExaminationPaperType为null
//paper.Csw_ExaminationPaperType.Ept_Code = int.Parse(Ept_Code);
paper.Subject_Id = int.Parse(Subject_Id);
paper.Grade_Id = int.Parse(Grade_Id);
paper.EP_Title = EP_Title;
paper.EP_Count = int.Parse(EP_Count);
paper.EP_Author = EP_Author;
paper.EP_CreateTime = DateTime.Now;
paper.EP_LastUpdateTime = DateTime.Now;
paper.EP_ExamTime = int.Parse(EP_ExamTime);
paper.EP_TotalPoints = int.Parse(EP_TotalPoints);
paper.EP_Status = int.Parse(EP_Status);
paper.EP_CreatorID = EP_CreatorID;
paper.EP_TestCount = EP_TestCount;
paper.EP_IsGenerate = EP_IsGenerate;
ques.AddToCsw_ExaminationPaper(paper);
ques.SaveChanges();
context.Response.Write(paper.EP_Code.ToString());
你要先确定 Ept_Code 是否有效
Ept_Code是有效的,就提示Csw_ExaminationPaperType这个外键表为null!而且编译是通过的
@xiaoyaner: 那主键有没有在呢
@Yu: 不好意思刚刚搞错了,Csw_ExaminationPaper这个是外键表,Csw_ExaminationPaperType这个是主键表
现在是要往Csw_ExaminationPaper这个表里插数据时给这个表的外键赋值时出现错误。
或者您可以跟我说一下linq插入数据时怎么给外键赋值,谢谢!
@xiaoyaner: 外键表 是 主键表对象的属性集合来的 可以通过主键表对象 直接增加, 如:
主键对象.外键表s.Add(...);
new 一个新对象,对象成员没有显示赋值 当然是默认值了,引用类型就是null.
@Qlin :如果new一个对象又是一个新的对象了,跟我要插入的表就没关系了!
@xiaoyaner:
就是一个普通的对象new,创建的过程 跟一般的一样。不赋值 就是默认值。
Csw_ExaminationPaper paper = new Csw_ExaminationPaper();
Csw_ExaminationPaperType paper_type = (from p in ques.Csw_ExaminationPaperType
where p.Ept_Code == 1
select p).SingleOrDefault<Csw_ExaminationPaperType>();//这个是关键哦
//paper.Csw_ExaminationPaperType.Ept_Code = int.Parse(Ept_Code);
paper.Csw_ExaminationPaperType = paper_type;
paper.Subject_Id = int.Parse(Subject_Id);
paper.Grade_Id = int.Parse(Grade_Id);
paper.EP_Title = EP_Title;
paper.EP_Count = int.Parse(EP_Count);
paper.EP_Author = EP_Author;
paper.EP_CreateTime = DateTime.Now;
paper.EP_LastUpdateTime = DateTime.Now;
paper.EP_ExamTime = int.Parse(EP_ExamTime);
paper.EP_TotalPoints = int.Parse(EP_TotalPoints);
paper.EP_Status = int.Parse(EP_Status);
paper.EP_CreatorID = EP_CreatorID;
paper.EP_TestCount = EP_TestCount;
paper.EP_IsGenerate = EP_IsGenerate;
ques.AddToCsw_ExaminationPaper(paper);
ques.SaveChanges();
context.Response.Write(paper.EP_Code.ToString());
linq主外键是自动关联的,你先查出来主键的那条记录赋给要插入数据的表的外键表属性就行了。