2013-04-18 2 views
0

내 응용 프로그램의 질문에 대한 기본 응답을 보유하고있는 tbGeneralOptions라는 테이블을 만들었습니다. 옵션은 각각 1,2,3의 값을 갖는 Yes, No, N/A입니다.다른 이름을 가진 필드의 외래 키

public class tbGeneralOption 
{ 
    public int tbGeneralOptionID { get; set; } 

    [Required(ErrorMessage = "Please enter an Option")] 
    [Display(Name = "Option")] 
    public string OptionName { get; set; } 

    public virtual ICollection<tbFamilyMember> tbFamilyMember { get; set; } 
    public virtual ICollection<tbFamily> tbFamily { get; set; } 

} 

내 tbFamilyMember 테이블에서 Disability 및 PhotoPermission 필드에 위 옵션의 값을 저장합니다.

public class tbFamilyMember 
{ 
    [Display(Name = "Family Member ID")] 
    public int tbFamilyMemberID { get; set; } 

    [Display(Name = "Family ID")] 
    public int tbFamilyID { get; set; } 

    [Required(ErrorMessage = "Please select a Role")] 
    [Display(Name = "Role")] 
    public int tbFamilyRoleID { get; set; } 

    [Display(Name = "Firstname")] 
    public string Firstname { get; set; } 

    [Display(Name = "Surname")] 
    public string Surname { get; set; } 

    [Required(ErrorMessage = "Please select if the Family Member has a disability")] 
    [Display(Name = "Disability")] 
    public int Disability { get; set; } 

    [Required(ErrorMessage = "Please select if the Family Member has given permission for photographs")] 
    [Display(Name = "Photo Permission")] 
    public int PhotoPermission { get; set; } 

    public virtual tbFamily tbFamily { get; set; } 
    public virtual tbFamilyRole tbFamilyRole { get; set; } 
    public virtual tbGeneralOption tbGeneralOption { get; set; } 
} 

제 문제는 내보기에 저장된 값의 OptionName을 표시하는 방법입니다.

외부 키를 통해 링크를 만들 수 있다고 가정하고 있지만 필드 이름이 일치하지 않으면이 작업을 수행 할 수 있습니까?

+0

이 질문이 도움이되는지보십시오. http://stackoverflow.com/questions/15572214/net-4-5-foreign-key-data-annotation-c-sharp –

답변

0

유형별 옵션이 고정되어 있고 정적 - 옵션이 동적으로 추가되지 않았기 때문에 아래 의견에 따라 tbGeneralOption이 필요하지 않습니다. 따라서 옵션이있는 유형에 대해 부울 속성으로 옵션을 만들어야합니다. 또한 정의에 따라 옵션이 필요하지 않으므로 이러한 옵션에 대한 오류 메시지를 제거 할 수 있습니다. 접근 생각은 경우에 당신은 당신이 아마 안,이를 표시 할 필요가 이미 바닥 아이디에 가족과 familyRole를 참조하고 있기 때문에

내가 속성을 tbFamilyIDtbFamilyRoleID을 제거합니다. 가족 용 업데이트 된 모델은 다음과 같습니다.

public class tbFamilyMember 
{ 
    public int tbFamilyMemberID { get; set; } 

    [Display(Name = "Firstname")] 
    public string Firstname { get; set; } 

    [Display(Name = "Surname")] 
    public string Surname { get; set; } 

    [Display(Name = "Disability")] 
    public bool Disability { get; set; } 

    [Display(Name = "Photo Permission")] 
    public bool PhotoPermission { get; set; } 

    public virtual tbFamily tbFamily { get; set; } 
    public virtual tbFamilyRole tbFamilyRole { get; set; } 
} 
+0

어떻게 Disability 또는 PhotoPermission 입력란에 연결 되나요? 내보기에는 현재 2의 값을 표시하는 @ Html.DisplayFor (model => model.Disability)가 있습니다. 그러나 @Html.DisplayFor (model => model.Disability.tbGeneralOption.OptionName)와 같은 것이 필요합니다. – Stephen

+0

그래서'tbFamilyMember .Disability'는 실제로'tbGeneralOption' 테이블의 일반 옵션 중 하나입니까? – Floremin

+0

예 맞습니다. – Stephen