首页 新闻 会员 周边

linq外键问题

0
悬赏园豆:5 [已关闭问题] 关闭于 2013-04-18 17:47

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

xiaoyaner的主页 xiaoyaner | 初学一级 | 园豆:173
提问于:2013-04-18 16:45
< >
分享
所有回答(3)
0

你要先确定 Ept_Code 是否有效

Yu | 园豆:12980 (专家六级) | 2013-04-18 17:08

Ept_Code是有效的,就提示Csw_ExaminationPaperType这个外键表为null!而且编译是通过的

支持(0) 反对(0) xiaoyaner | 园豆:173 (初学一级) | 2013-04-18 17:10

@xiaoyaner: 那主键有没有在呢

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2013-04-18 17:16

@Yu: 不好意思刚刚搞错了,Csw_ExaminationPaper这个是外键表,Csw_ExaminationPaperType这个是主键表

现在是要往Csw_ExaminationPaper这个表里插数据时给这个表的外键赋值时出现错误。

或者您可以跟我说一下linq插入数据时怎么给外键赋值,谢谢!

支持(0) 反对(0) xiaoyaner | 园豆:173 (初学一级) | 2013-04-18 17:26

@xiaoyaner: 外键表 是 主键表对象的属性集合来的 可以通过主键表对象 直接增加, 如:

 

主键对象.外键表s.Add(...);

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2013-04-18 17:38
0

new 一个新对象,对象成员没有显示赋值 当然是默认值了,引用类型就是null.

Qlin | 园豆:2403 (老鸟四级) | 2013-04-18 17:21

@Qlin :如果new一个对象又是一个新的对象了,跟我要插入的表就没关系了!

支持(0) 反对(0) xiaoyaner | 园豆:173 (初学一级) | 2013-04-18 17:28

@xiaoyaner: 

就是一个普通的对象new,创建的过程 跟一般的一样。不赋值 就是默认值。

支持(0) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2013-04-18 17:33
0

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主外键是自动关联的,你先查出来主键的那条记录赋给要插入数据的表的外键表属性就行了。

xiaoyaner | 园豆:173 (初学一级) | 2013-04-18 17:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册