저는 ASP.NET MVC를 시작하면서 데이터 컨텍스트에 NHibernate를 사용하고 있습니다. 엔티티 클래스에 외래 키 필드를 보관하여 목록을 쉽게 드롭 다운 할 수 있도록 만들었지 만 그렇지 않습니다.ASP.NET MVC - NHibernate - DropDownLists
var user = userRepository.GetById(id);
if (!TryUpdateModel(user, "User", new[] { "UserName", "RoleID" }))
return View(user);
// Update the role
user.Role = roleRepository.GetById(user.RoleID);
이 나를 User.RoleID 속성에 내 유효성 검사 논리를 넣을 수 있습니다 :
여기에 내 게시물 다시 작업입니다.
저장 될 때까지 모든 것이 제대로 작동합니다. 내 사용자 및 매핑 클래스는 다음과 같습니다.
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");
}
그러나 변경 사항을 커밋하려고하면 오류가 반환됩니다. Map (x => x.RoleID); 위의 매핑에서 삽입이 성공적으로 완료되었지만 사용자를 표시 할 때 데이터가 채워지지 않았습니다.
내가 선호하는 솔루션은 사용자 엔티티 (NHibernate에서 권장하는)에서 RoleID 속성을 제거하는 것이지만 사용자 정의 논리를 직접 처리해야합니다.
누군가 도와 주시면 감사하겠습니다. 감사합니다
정확히 무엇이 오류입니까? –
Count = 3 인이 SqlParameterCollection에 대한 인덱스 3이 잘못되었습니다. – nfplee