这个问题是以下问题的延续:
现在我明白了,使用DbSet
EF 时不会将整个集合加载到内存中
但是,如果我有类似以下代码的内容怎么办:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public ICollection<Role> Roles { get; set; }
}
public class Role
{
public int RoleID { get; set; }
public string RoleName { get; set; }
public User User { get; set; }
}
public class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
}
public class SomeClass
{
public void AssignRoleToUser(int userID, Role role)
{
var ctx = new MyContext();
var user = ctx.Users.First(x => x.UserID.Equals(userID));
user.Roles.Add(role);
ctx.SaveChanges();
}
}
在这种情况下,我没有使用DbSet
对象向角色ICollection
集合添加新对象,而是使用集合向特定用户添加新角色
那么在这种情况下会发生什么?
EntityFramewrk 是否必须将所有用户角色加载到内存中才能执行插入?