2012-04-11 5 views
3

MVC 4, EF 4.3 및 MVCScaffolding 패키지를 사용하고 있습니다.MvcScaffolding one-many relationship

나는 간단한 모델 클래스

public class Product 
{ 
    [Key] 
    public int ID { get; set; } 
    [Required] 
    public string Name { get; set; } 
    public virtual Category Category { get; set; } 
} 
public class Category 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Product> Products { get; set; } 
} 

다음 한 그래서 같은 컨트롤러를 스캐 폴딩 :

이 컨트롤러/뷰 등 내가 생각 것 Steve sanderson's post

를 생성

Scaffold Controller Category -Force 
Scaffold Controller Product -Force 

제품의 _CreateOrEdit.cshtml에는 Category에 대한 드롭 다운이 포함되지만 그렇지 않습니다.

Followng

는 _CreateOrEdit.cshtml의 내용이며,이 범주 내가 잘못 뭐하는 거지

<div class="editor-label"> 
@Html.LabelFor(model => model.Name) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Name) 
    @Html.ValidationMessageFor(model => model.Name) 
</div> 

에 대한 모든 HTML 템플릿을 포함하지 않는 이유는 무엇입니까?

답변

3

Product 클래스에도 CategoryID 속성이 있어야한다고 생각합니다. EntityFramework가 DB에 외래 키로 유지하기를 원하기 때문에 가상 키가되지 않습니다.

추가를 시도하고 다시 스캐 폴드하여 드롭 다운이되는지 확인하십시오. 당신이해야한다고 생각하는 것이 옳습니다.

또한 ID 필드가 키가되므로 [Key] 속성이 필요하지 않다고 생각합니다.

+0

예, 이제 알겠습니다. 튜토리얼을 다시 확인하고 그가 만든 원래 모델의 상태를 확인하십시오. 그는 TeamID를 가지고있다. 그런 다음 가상 아이템 팀과 플레이어 컬렉션을 추가합니다. 카테고리 ID를 카테고리로 바꿨습니다. 또는 CategoryID 외래 키로 시작하지 않았습니다. – Banford

+0

MvcScaffolding의 내재적 인 한계가있는 것 같습니다. 여기에 싫어하는 것은 CategoryID를 모델에 표시하고 가상 카테고리 속성이있는 경우 두 항목이 동기화되어 있는지 확인해야한다는 것입니다. –

관련 문제