2011-08-18 5 views
1

주문 상태가있는 주문 클래스가 있다고 가정하면 OrderStatus 클래스 내에 OrderStatusId를 선언하고 싶습니다. 그러나 기본적으로 외래 키 관계가 설정되어 있지 않습니다. 컬럼에 [ForeignKey] 속성을 사용하면 내 쿼리의 탐색 속성에 대한 조인을 수행해야만 상태를 확인할 수 있기 때문에 원하지 않는 탐색 속성을 요구하는 것 같습니다.탐색 속성을 사용하지 않고 codefirst에서 외래 키 관계를 설정하려면 어떻게해야합니까?

어떻게하면 EF codefirst에서이를 수행 할 수 있습니까? 탐색 속성을 사용하지 않고 속성을 외래 키로 정의하십시오.

답변

4

관계를 구축하려면 항상 내비게이션 속성이 at least one side이어야합니다. 네비게이션 속성이 없으면 외래 키를 바인딩 할 항목이 없으며 일반적인 열로 유지됩니다.

+0

부수적으로 참조 대신 FK 값을 사용하여 CODE FIRST ...를 사용하는 것은 거의 의미가 없습니다. –

+0

그 의미가 확실하지 않습니다. – jaffa

+0

그는 모델의 외래 키 값을 노출하지 않고 개체 컬렉션을 만들 수 있음을 의미합니다 –

0

이 같은 모델을 작성하는 대신

public class Customer 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string StreetAddress { get; set; } 
    //etc... 

    //navigation properties 
    public virtual List<Order> Orders { get; set; } 

} 

public class Order 
{ 

    public int Id { get; set; } 
    public string OrderStatus { get; set; } 

    //navigation properties 
    public virtual Customer OrderedBy { get; set; } 

    //etc.. 


} 

EF 그것이 불필요로 필요한 경우 ID를 액세스 할 수 있습니다 당신이 탐색 속성 모델에 노출 할 이유 사용 자체에 외국인 키를 생성합니다 탐색 속성 사용

관련 문제