0

내장 된 계정 컨트롤러/모델/뷰를 사용하여 표준 MVC 4 응용 프로그램을 만들었습니다. 다른 컨트롤러를 추가하려했지만 기존 사용자와 외래 키 관계를 만들려고했지만 오류 메시지가 나타납니다.MVC 4 Entity Framework - UserProfile의 외래 키

'MVC4App.Models.ListingModel'유형의 'CreatedBy'속성에 ForeignKeyAttribute가 있습니다. 유효하지 않습니다. 종속 키 유형 'MVC4App.Models.ListingModel'에서 외래 키 이름 'UserId'를 찾을 수 없습니다. Name 값은 쉼표로 구분 된 외래 키 특성 이름 목록이어야합니다.

목록 모델 코드는 다음과 같습니다.

using System; using System.ComponentModel.DataAnnotations.Schema;

namespace MVC4App.Models 
{ 
    public class ListingModel 
    { 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 

     public string Location { get; set; } 

     public string Instrument { get; set; } 

     public string Genres { get; set; } 

     public string Description { get; set; } 

     [ForeignKey("UserId")] 
     public virtual UserProfile CreatedBy { get; set; } 

     public DateTime CreatedOn { get; set; } 
    } 
} 

무엇이 여기에 있습니까? 아니면이 일을해야하는 더 좋은 방법이 있습니까?

또한 이메일 주소 나 나중에 프로젝트에서 아바타 이미지에 대한 링크와 같은 사용자 속성에 추가 속성을 추가 할 수 있다고 가정합니다.

답변

4

당신은 당신의 엔티티에 사용자 아이디를 추가 할 수 있습니다

namespace MVC4App.Models 
{ 
    public class ListingModel 
    { 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int Id { get; set; } 

     public string Location { get; set; } 

     public string Instrument { get; set; } 

     public string Genres { get; set; } 

     public string Description { get; set; } 

     public int UserId {get; set;} 
     [ForeignKey("UserId")] 
     public virtual UserProfile CreatedBy { get; set; } 

     public DateTime CreatedOn { get; set; } 
    } 
} 
+0

이 묻는 질문에 대해 어떻게 작동하는지 확실하지,하지만 지금까지 코드 First'이 우려'로,이 수 없습니다. 단지 하나의 ID 컬럼이 테이블 당 오직 하나만 허용됩니다. – Komengem

+0

이것은 다소 오래된 것임을 알고 있습니다. 그러나 @ komenge-mwandila에 대답하기 위해, 테이블 당 하나의 식별 컬럼이 있습니다. Id는 ID 열이고 UserId는 단지 int입니다. 부여 된 것은 외래 키로서 식별 열일 수있는 열에 연결되지만 그것은 단지 int입니다. ID 열이있는 두 테이블 사이에 외래 키를 갖기를 원할 때 볼 수 있듯이 Entity Framework와 관련이 없지만 문제를 명확히하는 데 도움이되기를 바랍니다. –

관련 문제