2 q6541oijhk q6541oijhk 于 2016.03.01 17:28 提问

Enity framework 向一个有外键的table插入数据 2C

Enity framework 怎么向一个有外键的table插入数据。
比如一个student表:
Id(主键)
Name
ClassId(外键,Class表的主键)

一个Class表:
Id(主键,student的外键)
Name

当我用ef(版本3.5)插入一条student记录时,例如 (1,小明,一班)注:“一班”这个数据存在于class表中。
这时ef会先去class表中插入“一班”这个数据,从而出现主键不能重复的异常,student也没法插入。如果Class表中没有“一班”这个数据
那么一切会正常执行。

插入函数,我用的是ef DBcontext派生类的AddToXXX()(XXX为表名)方法
之后调用savechanges保存 就会出现class表主键冲突的问题

请问这个问题怎么解决!

代码:

                                                            student.Classes = classes;
                           student.Colleges = college;
                           student.Degrees = degree;
                           student.GraduateYears = year;
                           student.Specials = special;
                                                         ae.AddToStudents(student);
            以上class college degree year special student 全部是model(根据数据库自己生成的)并且class college degree year special的主键全部是student的外键ae是DBcontext的对象

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.01 21:05

贴出你的代码,你重复插入主键了。

你可以用导航属性,比如
db.ClassTable.Students.Add(new Student() { ... });
db.SaveChanges();

q6541oijhk
q6541oijhk 回复caozhy: classes是new出来的
接近 2 年之前 回复
q6541oijhk
q6541oijhk 回复caozhy: 并且我用的是3.5版本没有类似于db.ClassTable.Students.Add的这个add方法只有db下有add方法
接近 2 年之前 回复
q6541oijhk
q6541oijhk 回复caozhy: 我修改了题目你看下
接近 2 年之前 回复
caozhy
caozhy classes在哪里定义的
接近 2 年之前 回复
q6541oijhk
q6541oijhk student.Classes = classes; student.Colleges = college; student.Degrees = degree; student.GraduateYears = year; student.Specials = special;
接近 2 年之前 回复
q6541oijhk
q6541oijhk student.Classes = classes; student.Colleges = college; student.Degrees = degree; student.GraduateYears = year; student.Specials = special;
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!