2011-10-07 3 views
0

ASP.net MVC3 면도기 EF가있는 뷰를 반환 할 수 없습니다 포함() 나는이 작업을 수행 할 때

가 작동 :

public ViewResult Index() 
    { 
     return View(db.Songs.Include("Artist").ToList()); 
    } 

을하지만 그렇지 않은 :

public ViewResult Index() 
    { 
     return View(db.Artists.Include("Song").ToList()); 
    } 

이 오류가 발생합니다 :

지정한 포함 경로가 유효하지 않습니다. EntityType 'MVCProject.Models.Artist'는 이름이 'Song'인 탐색 속성을 선언하지 않습니다.

왜 그런가? 더 많은 정보/코드가 필요한 경우 언급하십시오. 그런 일이 일어날 수있는 곳과 해결 방법에 대해 알려주십시오. 나를 미쳤어.

감사합니다.

아티스트 클래스 :

public class Artist 
{ 
    public int ArtistID{ get; set; } 
    public string Name { get; set; } 
    public IQueryable<Song> Songs{ get; set; } 
} 
+0

IT는 [탐색 속성 (http://msdn.microsoft이없는 의미합니다 .com/en-us/library/bb738520.aspx)에서 'Artists'를 'Song'으로 매핑합니다. –

+0

@RobertHarvey 감사합니다.이 링크를 이해할 수 없습니다. 그것은 가이드 이상의 문서이므로 학습 참고서가 있으면 좋을 것입니다. 이름을위한 tho 감사, 나는 찾는다. 그래서 complety ok. – MasterMastic

답변

2

public virtual ICollection<Song> Songs{ get; set; }

public class Artist 
{ 
    public int ArtistID{ get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Song> Songs{ get; set; } 
} 

public IQueryable<Song> Songs{ get; set; } 교체 아티스트를위한 모델 클래스를 보여줄 필요가 그런

return View(db.Artists.Include("Songs").ToList()); 
+0

감사합니다. IQueryable을 사용할 수 없습니까? Songs = context.Songs.Where (s => s.Artist.Name == "아티스트 이름"))). ICollection을 사용해야하는 경우 어떻게해야합니까? – MasterMastic

+0

@Key 아니요 'IQueryable'은 데이터 소스에 대해 쿼리를 수행합니다. '노래 '는 질의와는 별도로 추가와 제거를 지원해야하는 모음이어야합니다. – Eranga

+0

아, 첫 번째 댓글에서와 같이 아티스트의 이름이 'X'인 모든 노래를 가져 오려면 어떻게해야합니까? – MasterMastic

0

당신은 아마 아티스트 클래스에 대한 탐색 속성으로 노래 (복수)가 있습니다. 따라서 return View(db.Artists.Include("Songs").ToList());이 작동해야합니다. OT 경우 - 당신이

+0

응답 해 주셔서 감사합니다. 나는 그것을 "노래"로 바꾸려고 노력했다. 나는 같은 오류를 가지고있다. 나는 질문을 편집하고 아티스트 클래스를 포함 시켰습니다. 네가 그걸로 나를 도울 수 있기를 바랍니다. – MasterMastic

+1

가상 노래를 표시해야합니다 (EF에서 코드 첫 번째 패턴을 사용한다고 가정) http://msdn.microsoft.com/en-us/library/gg715120%28v=10.%29.aspx – Felix

관련 문제