2012-01-10 2 views
0

관련 테이블의 기본 키가 아닌 관련 모델 변수를 표시하는 방법을 찾도록 도와 줄 수 있는지 궁금합니다. (이 경우 pk는 ID이고 그것은별로 도움이되지 않습니다).관련 테이블의 기본 키 (ID) 이외의 관련 변수 표시

모델 :

[EdmRelationshipNavigationPropertyAttribute("PlantModel", "FK_PlantSoilpH_Plant", "PlantSoilpH")] 
     public EntityCollection<PlantSoilpH> PlantSoilpHs 
     { 
      get 
      { 
       return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<PlantSoilpH>("PlantModel.FK_PlantSoilpH_Plant", "PlantSoilpH"); 
      } 
      set 
      { 
       if ((value != null)) 
       { 
        ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<PlantSoilpH>("PlantModel.FK_PlantSoilpH_Plant", "PlantSoilpH", value); 
       } 
      } 
     } 

컨트롤러 :

public ViewResult Index() 
{ 
    return View(db.Plants.ToList()); 
} 

보기 :

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.PlantName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.ScientificName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.PlantSoilpHs) 
     </td> 

내 생각 엔 난 그냥 추가 할 수 있어야한다고했다 'item.PlantSoilpHs.Name' 그러나 그것은 그렇게 보이지 않습니다. 어떤 생각이라도 대단히 감사하겠습니다! 당신의 설명 만 PlantID 및 PlantName를 포함 -

-Scott 나는 당신의 질문과 의견을 분석하여 수집 할 수 있습니다 무엇에서

+0

'Plant.PlantSoilpHs'는 콜렉션입니까, 그렇지 않습니까? 무엇을 표시하고 싶습니까? 'PlantSoilpH'의 모든 이름을 가진 "중첩 된"테이블 또는 컬렉션의 첫 번째 요소의 이름 또는 ...? – Slauma

+0

데이터베이스에 Plant, PlantSoilpH 및 SoilpH 테이블이 3 개 있습니다. Plant는 PlantID (PK) 및 PlantName을 포함하는 테이블입니다. SoilpH는 SoilpHID (PK) 및 SoilpHName을 포함하는 테이블입니다. PlantSoilpH는 PlantSoilpHID (PK), PlantID (FK/1 : 1) 및 SoilpHID (FK/Many : 1)를 포함하는 테이블입니다. 귀하의 질문에 대답하기 위해 컬렉션에 대해 충분히 알지 못하지만 내가하려고하는 것은 식물의 SoilpHName을 보여주는 것입니다. 대신 PlantSoilpHID가 있습니다. 멍청한 놈. 당신의 도움을 주셔서 감사합니다! – skhot

+0

나는'@Html.DisplayFor (modelItem => item.PlantSoilpHs.Select (p => p.SoilpH.Name))'만 추측 할 수있다. – Slauma

답변

0

, 당신은 식물 개체의 목록을 반환하는보기를 사용하고 있습니다. 이 방법으로 SoilpHName을 반환 할 수 없습니다. 코드가 정확하지 않은 경우

return View(db.Plants.ToList()); 

대신, 식물과 관련된 SolpHName을 얻기 위해 당신은

return View(db.PlantSoilpHs.ToList()); 
컨트롤러에서

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Plant.PlantName) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.SoilpH.Name) 
    </td> 
</tr> 

하는 것은 용서를 사용해야합니다 , 테스트되지 않았으며 문제 설명을 기반으로 만 제공되었습니다.