EF-database-first를 사용하여 MVC4 웹 응용 프로그램을 만들었습니다. 예를 들어 , 부 부분 클래스 :복합 키가있는 MVC4 탐색 속성
[MetadataType(typeof(DepartmentMetadata))]
public partial class Department
{
public int DeptID { get; set; }
public string DeptName { get; set; }
public System.DateTime EffDate { get; set; }
public string Status { get; set; }
public string RevenueAccount { get; set; }
}
부 메타 클래스 :
public class DepartmentMetadata
{
[Required]
public int DeptID { get; set; }
[Required]
[Display(Name = "Department Name")]
public string DeptName { get; set; }
[Required]
[Display(Name = "Effective Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", NullDisplayText = "--", ConvertEmptyStringToNull = true)]
public System.DateTime EffDate { get; set; }
[Required]
public string Status { get; set; }
[Display(Name = "Revenue Account")]
[StringLength(10)]
public string RevenueAccount { get; set; }
}
할당 표는 복합 키 [ID, 이름, EffDate, 상기 데이터베이스에 정의 외부 키를 가지고 테이블, Department 테이블을 참조합니다. 또한 복합 키 [DeptID, ProjectID, BillableUnitID, EffDate]가 있습니다. 가능한 경우 DeptID 필드를 외래 키로 선언 하겠지만 데이터베이스를 제어하지는 않으며 더 중요한 것은 외래 키가 외래 키를 복합 키의 일부로 허용하지 않는다고 생각합니다.
[MetadataType(typeof(AllocationMetadata))]
public partial class Allocation
{
public int DeptID { get; set; }
public int ProjectID { get; set; }
public int BillableUnitID { get; set; }
public System.DateTime EffDate { get; set; }
public string Status { get; set; }
public decimal Allocation1 { get; set; }
}
이 작동하지만 DeptID 번호의 열이 표시됩니다. 내가 갖고 싶은 것은 부서 이름의 열입니다.
이전의 question
가상 탐색 특성에 저를 지시, 그래서 그들을 추가 : 색인에 대한 AllocationController의 코드는[MetadataType(typeof(AllocationMetadata))]
public partial class Allocation
{
[ForeignKey("Department")]
public int DeptID { get; set; }
public int ProjectID { get; set; }
public int BillableUnitID { get; set; }
public System.DateTime EffDate { get; set; }
public string Status { get; set; }
public decimal Allocation1 { get; set; }
public virtual Department Department { get; set; } /* navigation property */
}
입니다 : 공공 ActionResult 지수() { 반환보기 (db.Allocation . 포함 (a => a.Department) .ToList());
서버 오류 '/'응용 프로그램 :
내가 할당 인덱스보기의 링크를 클릭 }
, 나는 (I 디버깅 중지 후)이 오류 메시지가 표시됩니다.지정한 포함 경로가 유효하지 않습니다. EntityType 'KC_BillableUnit_TESTModel.Allocation'은 'Department'라는 이름의 탐색 속성을 선언하지 않습니다.
스택 추적 [InvalidOperationException : A 지정 포함 포함 경로가 유효하지 않습니다. EntityType 'KC_BillableUnit_TESTModel.Allocation은'이름 '부'와 탐색 속성을 선언하지 않습니다.]
System.Data.Objects.Internal.ObjectFullSpanRewriter.ConvertSpanPath을 (SpanPathInfo parentInfo, List`1 navPropNames, INT32의 POS) + 8355128
System.Data.Objects.Internal.ObjectFullSpanRewriter..ctor (DbCommandTree 나무, DbExpression toRewrite, 스팬 스팬) 나는 다양한 조합을 시도했습니다
256 는 .... 계속 .... 모든 주석은 동일한 오류가 발생합니다.
DeptID 번호 대신 Department 이름을 표시하도록 할당 목록을 가져 오려면 어떻게해야합니까?