我正在使用实体框架。
我的模型是这样的:
群组: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?
谢谢!
答案 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();
}