Je ne fais que commencer avec ASP.NET MVC et j'utilise NHibernate pour mon contexte de données. J'ai gardé les champs de clés étrangères dans mes classes d'entités afin de faciliter le travail avec les listes déroulantes, mais ce n'est pas le cas.ASP.NET MVC - NHibernate - DropDownLists
Voici mon post retour l'action:
var user = userRepository.GetById(id);
if (!TryUpdateModel(user, "User", new[] { "UserName", "RoleID" }))
return View(user);
// Update the role
user.Role = roleRepository.GetById(user.RoleID);
Cela me permet de mettre ma logique de validation sur la propriété User.RoleID.
Tout fonctionne bien jusqu'à ce qu'il l'enregistre. Voici mon utilisateur et la classe de mappage:
public virtual int UserID { get; set; }
[Required(ErrorMessage = "Username is required")]
public virtual string UserName { get; set; }
[Required(ErrorMessage = "Role is required")]
public virtual int RoleID { get; set; }
public virtual Role Role { get; set; }
public UserMap()
{
Table("Users");
Id(x => x.UserID);
Map(x => x.UserName);
Map(x => x.RoleID);
References(x => x.Role, "RoleID");
}
Cependant, cela renvoie une erreur lors de la validation des modifications. J'ai essayé d'enlever la carte (x => x.RoleID); à partir du mappage ci-dessus et l'insertion s'est déroulée avec succès, mais les données n'ont pas été remplies lors de l'affichage de l'utilisateur.
Ma solution préférée serait de supprimer la propriété RoleID de l'entité User (comme recommandé par NHibernate) mais je devrais alors gérer ma logique de validation moi-même.
J'apprécierais que quelqu'un puisse vous aider. Merci
Quelle est exactement l'erreur? –
Index 3 invalide pour ce SqlParameterCollection avec Count = 3. – nfplee