0

별도의 프로젝트에 엔터티가 있습니다. 이미 Entity 프로젝트를 참조하고있는 Web 프로젝트의 UserProfile 모델의 UserId을 참조해야합니다. 누구 내 기업에 새로운 외래 키를 얻을하는 데 도움이 될 수 있습니다 (Expense 엔티티 클래스 같은 이미 회원 테이블 UserProfile의 기본 키 추가 필드 Expender을 얻을 수 있습니까?)ASP.NET MVC 4 멤버쉽 사용자 프로필 테이블에서 외래 키 필드를 가져 오는 Entity Framework 엔터티

namespace ExpenseAssistant.Entities 
{ 
    /// <summary> 
    /// Expense 
    /// </summary> 
    public class ExpenseEntry 
    { 
     /// <summary> 
     /// Gets or sets Unique Id of the Expense 
     /// </summary> 
     public virtual int Id { get; set; } 

     /// <summary> 
     /// Gets or sets Description about the Expense 
     /// </summary> 
     public virtual string ExpenseDescription { get; set; } 

     /// <summary> 
     /// Gets or sets the Amount Spent 
     /// </summary> 
     public virtual float Amount { get; set; } 

     /// <summary> 
     /// Gets or sets the Expender which is the UserId from UserProfile Table 
     /// </summary> 
     [ForeignKey("UserProfile")] 
     public virtual int ExpenderId { get; set; } 
    } 
} 

회원 테이블이에 모든 엔티티 테이블이있는 동일한 데이터베이스.

나는 'ExpenseAssistant.Entities.ExpenseEntry'유형에 재산에

ForeignKeyAttribute 'ExpenderId', 나는 아래와 같은 오류가 점점 오전이 키 ExpenderIdExpenseEntry에서 개체를 추가 한 후 콘솔에서 update-database으로 시도 유효하지 않습니다. 내비게이션 'UserProfile'종속 유형 'ExpenseAssistant.Entities.ExpenseEntry'에서 찾을 수 없습니다. 이름 값은 유효한 탐색 속성 이름 이어야합니다.

미리 감사드립니다.

답변

1

두 가지 문제점이 있습니다.

첫 번째 문제는 속성이 네비게이션 속성 (사용하지 않는 것 같음)에 사용된다는 것입니다.

이러한 탐색 속성의 예는 다음과 같습니다

public virtual UserProfile Expender { get; set; } 

두 번째 문제는 ForeignKeyAttribute 생성자에 전달 이름이 클래스의 외부 키를 포함하는 속성의 이름이어야한다는 것입니다, 외부 키가 참조하는 테이블 또는 엔티티의 이름이 아 U니다.

이 당신의 코드가 어떻게 보일지입니다 :

public virtual int ExpenderId { get; set; } 

[ForeignKey("ExpenderId")] 

public virtual UserProfile Expender { get; set; } 
+0

내가 다른 방법으로이 문제를 해결 한! 기존 테이블에서 모델 다이어그램을 사용하여 관계를 만들었습니다. 리버스 엔지니어링 후에 콘솔에서 update-database 명령을 실행했습니다. 그것은 일했다! 어쨌든 감사합니다! –