插入/更新多对多实体框架我该怎么做?

【字号: 日期:2024-03-18浏览:46作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决插入/更新多对多实体框架我该怎么做??

就实体(或对象)而言,您有一个Class对象的集合,Students该Student对象具有的集合,一个对象的集合具有的集合Classes。由于您的StudentClass表仅包含ID,而没有其他信息,因此EF不会为联接表生成实体。这是正确的行为,这就是您的期望。

现在,在进行插入或更新时,请尝试根据对象进行思考。例如,如果要插入一类具有两个学生,创建Class对象,该Student对象,学生添加到类Students集合中添加Class对象的背景和呼叫SaveChanges:

using (var context = new YourContext()){ var mathClass = new Class { Name = 'Math' }; mathClass.Students.Add(new Student { Name = 'Alice' }); mathClass.Students.Add(new Student { Name = 'Bob' }); context.AddToClasses(mathClass); context.SaveChanges();}

这将在Class表中创建一个条目,该表中的两个条目以及该Student表中的两个条目StudentClass将它们链接在一起。

基本上,您也可以进行更新。只需获取数据,通过添加和删除集合中的对象来修改图形,请调用SaveChanges。查看此类似问题以获取详细信息。

根据您的评论,您需要插入一个新的Class并添加两个现有的Students:

using (var context = new YourContext()){ var mathClass= new Class { Name = 'Math' }; Student student1 = context.Students.FirstOrDefault(s => s.Name == 'Alice'); Student student2 = context.Students.FirstOrDefault(s => s.Name == 'Bob'); mathClass.Students.Add(student1); mathClass.Students.Add(student2); context.AddToClasses(mathClass); context.SaveChanges();}

由于这两个学生都已经在数据库中,因此不会插入他们,但是由于他们现在在的Students集合中,因此Class会将两个条目插入StudentClass表中。

解决方法

我正在使用EF4和它的新功能。我的项目中有很多很多,似乎无法弄清楚如何插入或更新。我建立了一个小项目,只是为了看看应该如何编码。

假设我有3张桌子

类别:ClassID-ClassName 学生:StudentID-名字-姓氏StudentClass:StudentID-ClassID

添加所有关系并通过模型浏览器更新了模型后,我注意到没有出现StudentClass,这似乎是默认行为。

现在,我需要同时进行插入和更新。你怎么做呢?我可以下载示例的任何代码示例或链接,还是可以节省5分钟?

相关文章: