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

时间:2010-07-14 10:29:52

标签: c# entity-framework-4 many-to-many poco

我正在将POCO与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; }
}

这就是PrivilegeGroup类的样子:

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; }
    }

}

查询和插入这些实体工作正常,但删除存在问题,即我想从没有db往返的一个用户中删除PrivilegeGroup,但我不知道该怎么做。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

有趣的问题。这是你怎么做的。

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();

解决同一问题总共有4种不同的方法。但我觉得你告诉我的,这应该足够了,但如果你需要更多的信息,你可以通过邮件直接ping我