如何将现有子项添加到新父项

时间:2017-10-18 00:54:26

标签: vb.net entity-framework entity-framework-5

我正在使用实体框架。

我的模型是这样的:

群组:ID,姓名

用户:Id,Name,GroupID。

情况是这样的: 我有一个用户(User1)不是任何组的成员。

我创建了一个新组,并希望将此用户添加到此新组中。

我有这段代码:

Dim grp1 as new Group
grp1.name="Students"
context.Groups.Add(grp1)
context.savechanges()
usr1.GroupID=grp1.ID
context.savechanges()

此代码有效,但我已经调用了两次SaveChanges。 有没有办法将现有的usr1附加到grp1的子集合中,之后只调用一次Savechanges?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果usr1是被跟踪的实体,那么您可以将该群组添加到用户的Group导航属性中,而不是尝试使用该ID。

Dim grp1 as new Group
grp1.name="Students"
usr1.Group=grp1
context.savechanges()

https://msdn.microsoft.com/en-us/library/jj713564(v=vs.113).aspx

  

通过将新对象分配给导航属性。以下代码   在课程和部门之间建立关系。如果   对象附加到上下文中,课程也被添加到   department.Courses集合,以及相应的外键   课程对象上的属性设置为关键属性值   部门。 course.Department = department;

https://msdn.microsoft.com/en-us/library/jj592676(v=vs.113).aspx(参见博客示例)

using (var context = new BloggingContext()) 
{ 
    // Add a new User by setting a reference from a tracked Blog 
    var blog = context.Blogs.Find(1); 
    blog.Owner = new User { UserName = "johndoe1987" }; 

    context.SaveChanges(); 
}