0

MVC 3에 웹 사이트를 구축 중입니다.테이블 간의 관계 mvc3

저는 기존 데이터베이스에서 EF 코드를 먼저 사용하고 있습니다. 모델 내부

내 ET는 같이 :

public class Pages 
{ 
    [Required] 
    public int ID { get; set; } 

    public int ParentID { get; set; } 

    [Required] 
    public int PageType { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [DisplayName("כותרת")] 
    public string Title { get; set; } 

    public string SearchWords { get; set; } 

    public string Leng { get; set; } 

    public int? Sort { get; set; } 

    public string Modules { get; set; } 

    [ForeignKey("PageType")] 
    public virtual PagesType Type { get; set; } 

    public virtual IEnumerable<PagesType> Types { get; set; } 

    [ForeignKey("PageID")] 
    public ICollection<PageContent> PageContent { get; set; } 

    [ForeignKey("PageID")] 
    public virtual ICollection<ImagesTable> Images { get; set; } 


} 

public class PageContent 
{ 
    public int ID { get; set; } 

    public int PageID { get; set; } 

    public string Header { get; set; } 

    public string Text { get; set; } 

    [ForeignKey("ID")] 
    public virtual ICollection<Pages> Pages { get; set; } 

} 

추운 페이지를 내가 PageContent라는 이름의 다른 테이블에 관계를 가지고 내 주먹 표에서 보는 바와 같이

. 내 페이지 클래스

내가 내가 내가 오류가 새로운 페이지에 새로운 pageContent을 추가하려고이 코드

지금
[ForeignKey("PageID")] 
    public ICollection<PageContent> PageContent { get; set; } 

을했다.

오류가 개체의 인스턴스로 설정되지

객체 참조 코드를

public ActionResult AddPage(PageModel page) 
    { 
     SystemLogic cmd = new SystemLogic(); 

     page.Leng = "he"; 
     Models.Pages p = new Pages(); 

     p.ParentID = page.ParentID; 
     PageContent pageContent = new PageContent(); 
     pageContent.Text = page.Content; 

     p.PageContent.Add(pageContent); 

참조.

내가 뭘 잘못 했니?

+0

정확히 어떤 줄에서 Object 참조 오류가 발생합니까? 그것이'p.PageContent.Add (pageContent);에 있다면'p.PageContent가 실제로 설정되어 있고 대신 NULL이 아닌지 확실합니까? –

답변

1

컬렉션이 초기화되지 않았으므로 p.PageContent.Add(pageContent);에 NRE가 표시됩니다. Pages 클래스의 생성자에서 컬렉션을 초기화합니다.

public class Pages 
{ 
    public Pages() 
    { 
     PageContent = List<PageContent>(); 
     Images = List<ImagesTable>(); 
    } 

    [Required] 
    public int ID { get; set; } 

    public int ParentID { get; set; } 

    [Required] 
    public int PageType { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [DisplayName("כותרת")] 
    public string Title { get; set; } 

    public string SearchWords { get; set; } 

    public string Leng { get; set; } 

    public int? Sort { get; set; } 

    public string Modules { get; set; } 

    [ForeignKey("PageType")] 
    public virtual PagesType Type { get; set; } 

    public virtual IEnumerable<PagesType> Types { get; set; } 

    [ForeignKey("PageID")] 
    public ICollection<PageContent> PageContent { get; set; } 

    [ForeignKey("PageID")] 
    public virtual ICollection<ImagesTable> Images { get; set; } 
} 

아니면 컬렉션

if (p.PageContent == null) p.PageContent = new List<PageContent>(); 

p.PageContent.Add(pageContent); 

에 개체를 추가하기 전에 적절한 이름 지정 규칙을 사용하는 것이 좋습니다 (예 : Page 대신 Pages).

관련 문제