【发布时间】:2011-04-08 05:52:27
【问题描述】:
在多对多情况下,我需要一些帮助来为用户添加角色。
所以我有User 和很多Role 和Role 有很多User。
我认为我的存储库中当前的Update() 方法不起作用。如何构建允许我删除所有以前的角色并向用户添加新角色的存储库方法?
这是我目前拥有的:
public User UpdateUser(User user, IEnumerable<Expression<Func<User, object>>> properties)
{
if (string.IsNullOrEmpty(user.UserId))
{
throw new InvalidOperationException("user does not exist");
}
else
{
db.Users.Attach(user);
foreach (var selector in properties)
{
string propertyName = Helpers.PropertyToString(selector.Body);
db.Entry(user).Property(propertyName).IsModified = true;
}
}
db.SaveChanges();
return user;
}
这是更新用户的正确方法吗?我假设一切都是分离的。这就是我调用它为用户添加角色的方式:
User user = new User();
user.UserId = userId;
user.Roles = new Domain.Role{ RoleId = 1}; //Assuming there is a role with ID = 1
userRepo.UpdateUser(user, new List<Expression<Func<User, object>>>
{
u => u.Roles
});
【问题讨论】:
标签: asp.net-mvc entity-framework asp.net-mvc-3 ef-code-first