首页 新闻 会员 周边

Linq 多表插入时提示子表主键重复

0
悬赏园豆:5 [待解决问题]


请问 Linq 中 如果我要插入一个新的 T_AskAndAnswer记录
我程序代码这样子写 会有错误  原因是t1 t2  s1 s2 都是从数据库表中读出来的 在插入新的组newGroup时 context.SubmitChanges();会要求数据库向T_XETeacher插入t1,t2 ;向T_XEStudent插入s1, s2 由于 主键冲突会导致context.SubmitChanges();失败

T_XETeacher t1 = repository.GetTeacherByName("T1");
T_XETeacher t1 = repository.GetTeacherByName("T2");
T_XEStudent s1 = repository.GetStudentByName("S1");
T_XEStudent s2 = repository.GetStudentByName("S1");
T_AskAndAnswer newGroup  = new T_AskAndAnswer();
newGroup.GroupId = 0;
newGroup.GroupName = "Group1";
newGroup.T_XETeachers.Add(t1);
newGroup.T_XETeachers.Add(t2);
newGroup.T_XEStudents.Add(s1);
newGroup.T_XEStudents.Add(s2);
AskAndAnswerTable.InsertOnSubmit(newGroup);
context.SubmitChanges();

数据库表设计如图所示所示
其实context.SubmitChanges()提交更改如果做
T_AskAndAnswer表的插入newGroup 和
 T_XETeacher的t1,t2的修改(GroupId字段的修改)
及T_XEStudent的s1,s2的修改(GroupId字段的修改) 那么就能实现我的功能

王祖文 邪恶的主页 王祖文 邪恶 | 初学一级 | 园豆:197
提问于:2012-04-06 23:47
< >
分享
所有回答(2)
0

S1和S2对应的不都是S1吗?是不是自身业务设计考虑有问题,请检视自己的设计。

TsuiChihKun | 园豆:213 (菜鸟二级) | 2012-04-07 06:51

打错了,改正后 问题依旧

T_XEStudent s1 = repository.GetStudentByName("S1");
T_XEStudent s2 = repository.GetStudentByName("S2");

支持(0) 反对(0) 王祖文 邪恶 | 园豆:197 (初学一级) | 2012-04-07 09:19
0

关注学习。。。

KivenRo | 园豆:1734 (小虾三级) | 2012-04-07 07:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册