我正在将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,但我不知道该怎么做。
有人可以帮助我吗?
答案 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我