代码之家  ›  专栏  ›  技术社区  ›  DraÅ¡ko

如何使用POCOs删除多对多关系中的实体

  •  0
  • DraÅ¡ko  · 技术社区  · 15 年前

    我将POCOs与EF4结合使用,一些实体处于多对多关系中,在我的例子中,类User的对象和类PrivilegeGroup的对象。

    这是类用户的样子:

    public class User
    {
        public int UserID { set; get; }
        public string UserName { get; set; }
        public string UserPassword { get; set; }
        public bool IsActive { get; set; }
    
        public List<PrivilegeGroup> PrivilegeGroups { get; set; }
    }
    

    public class PrivilegeGroup
    {
        public int PrivilegeGroupID { get; set; }
        public string Name { get; set; }
    
        public List<User> Users { get; set; }
        public List<HasPrivilege> HasPrivileges { get; set; }
    }
    

    我已经扩展了ObjectContext类 具体如下:

    public class AdminMDSContext : ObjectContext
    {
    
        public AdminMDSContext(string connectionString)
            : base(connectionString)
    
        {
            this.DefaultContainerName = "MDSUsers_Entities";
            _users = CreateObjectSet<User>();
            _privilegeGroups = CreateObjectSet<PrivilegeGroup>();
    
        }
    
    
        private ObjectSet<User> _users;
        private ObjectSet<PrivilegeGroup> _privilegeGroups;
    
        public ObjectSet<User> Users
        {
            get { return _users; }
        }
    
    
        public ObjectSet<PrivilegeGroup> PrivilegeGroups
        {
            get { return _privilegeGroups; }
            set { _privilegeGroups = value; }
        }
    
    }
    

    这些实体的查询和插入工作正常,但删除会产生问题,即我想从一个用户中删除privilegegegegroup而不需要db roundtrip,但我不知道如何做。

    1 回复  |  直到 10 年前
        1
  •  3
  •   zeeshanhirani    15 年前

    var user = new User { UserId = 1 };
    var admin = new Privilege { PrivilegeId = 1 };
    user.Privileges.Add(admin);
    db.Users.Attach(user);
    user.Privileges.Remove(admin);
    db.SaveChanges();