我需要一些幫助,在許多情況下向用戶添加角色。EF Codefirst更新多對多
所以我有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
});