ASP.NET MVC 3에서 카탈로그 프로젝트를 개발하고 EF 코드를 먼저 기존 데이터베이스와 함께 사용하려고합니다. 카테고리 내 데이터베이스에 자체가 가리키는 테이블이 있습니다. 이를 위해 다음 모델 클래스를 작성했습니다. - "모델이 잘못된 경우 정정 해줘"-자체에 대한 외부/탐색 키가있는 Model 클래스로 작업
public class Category
{
public int CategoryID { get; set; }
public string CategoryName { get; set; }
public int? ParentCategoryID { get; set; }
public string CategoryDesc { get; set; }
[ForeignKey("ParentCategoryID")]
public virtual Category ParentCategory { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
질문을 : 나는이 클래스로 작업 할 수있는 방법에 관한 이해 할 수없는입니다. 다음 코드를 사용하여보기에 전달하는 동안
var cat = dbStore.Categories.Include("ParentCategory").ToList()
.
이 오류가 발생했습니다 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 루트 카테고리에 null ParentCategoryID가 있기 때문에 이러한 현상이 발생합니다. 이 코드 나 이러한 시나리오에서 작업하는 것을 이해하는 데 도움이되는 리소스로 어떻게 작업 할 것인지 알려주십시오. 목록이나 메뉴 등을 표시하는 것과 같은 위의 모델을 사용하는 모든 종류의 코드가 도움이 될 것입니다.
계층 적 데이터의 이러한 유형의 작업에 필요한 InverseProperty를 추가 할 수 있습니까? . 이러한 유형의 활용은 메뉴, 목록, 제품 목록 및 카테고리를 다루는 모든 요구 사항과 같은 모든 유형의 시나리오에서 작동합니다. –
@ Pankaj 그것은 계층 적 데이터를위한 것이 아닙니다. EF가 관례에 따라 관계를 파악할 수없는 경우 속성 또는 유창 API를 통해 명시 적으로 구성해야합니다. – Eranga
이 코드를 시도하고 잘 작동합니다; 하지만 그것은 단지 하나의 깊은 수준입니다. 깊은 중첩 된 범주는 목록에서 제외됩니다. :: category - subCategory - subsubCategory **와 같습니다. 이 subsubCategory에서는 제외됩니다. 중첩 된 범주만큼 많은 inverse 속성을 포함해야합니까? –