【发布时间】:2013-01-11 06:59:56
【问题描述】:
这个问题是以下问题的延续:
EntityFramework adding new object to a collection
现在我明白了,使用 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 对象向 Role 集合添加新对象,而是使用 @ 向特定用户添加新角色987654325@收藏
那么在这种情况下会发生什么?
EntityFramewrk 是否必须将所有用户角色加载到内存中才能执行插入操作?
【问题讨论】:
-
在这个提供的代码中,上面你没有添加新角色,因为你的 ctx.Users 只是用来检索数据。
标签: c# entity-framework