J'ai besoin d'aide sur l'ajout de rôles à l'utilisateur dans une situation beaucoup plus.EF Codefirst mise à jour de nombreux à plusieurs
Donc j'ai User
avec beaucoup Role
et Role
a beaucoup User
.
J'ai pensé que ma méthode actuelle Update()
dans mon référentiel ne fonctionnera pas. Comment puis-je créer une méthode de référentiel qui me permet de supprimer tous les rôles précédents et d'ajouter de nouveaux rôles à l'utilisateur?
C'est ce que j'ai actuellement:
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;
}
Est-ce la bonne façon de mettre à jour un utilisateur? Je suppose tout ce qui est détaché. Voici comment j'appelle cette option pour ajouter des rôles à l'utilisateur:
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
});