2013-05-25 2 views
0

ForeignKeyAttribute이있는 두 테이블 간의 관계를 정의하려고합니다. ForeignKeyAttribute으로이 작업을 수행하는 흥미로운 방법을 설명하는 사이트가 몇 개 있습니다. ForeignKeyAttributepublic virtual Customer Customer { get; set; }에 배치되고, 제 코드 샘플코드 처음으로 ForeignKeys 정의

public class Customer 
{ 
    public int ID { get; set; } 

    [ForeignKey("Order")] 
    public int OrderID { get; set; } 

    // Some other properties 

    public virtual Order Order { get; set; } 
} 

public class Order 
{ 
    public int ID { get; set; } 

    [ForeignKey("Customer")] 
    public int CustomerID { get; set; } 

    // Some other properties 

    public virtual Customer Customer { get; set; } 
} 

:

첫번째 :

public class Customer 
{ 
    public int ID { get; set; } 
    public int OrderID { get; set; } 

    // Some other properties 

    [ForeignKey("OrderID")] 
    public virtual Order Order { get; set; } 
} 

public class Order 
{ 
    public int ID { get; set; } 
    public int CustomerID { get; set; } 

    // Some other properties 

    [ForeignKey("CustomerID")] 
    public virtual Customer Customer { get; set; } 
} 

두번째 여기

두 코드 샘플이다 .

public int CustomerID { get; set; } (Order- 및 CustomerID)의 두 번째 코드 샘플에서.

제 질문은 어떤 상황에서 어떤 방법을 사용해야하는지 어떻게 알 수 있습니까?

나는 이것을을 사용하여 수행 할 수도 있지만이 질문과 관련이 없다는 것을 알고 있습니다.

답변

0

먼저 어떤 속성에도 ForeignKey 속성을 배치 할 필요가 없다고 말하고 싶습니다. 간단하게 다음을 수행하는 것은 충분해야한다 :

public class Customer 
{ 
    public int ID { get; set; } 

    //EF will create the relationship since the property is named class+id 
    //the following is not necessary, is just good practice 
    //if this is omitted EF will create a Order_Id on its own 
    public int OrderID { get; set; } 

    // Some other properties 

    public virtual Order Order { get; set; } 
} 

public class Order 
{  
    public int ID { get; set; } 

    // no need to include the id property 
    // Some other properties 

    public virtual Customer Customer { get; set; } 
} 

는 대답은 ForeignKey 구조가 문자열 매개 변수에 걸리는 것입니다,라고 말했다 가졌어요. 외래 키 등록 정보에 배치하는 경우 탐색 등록 정보의 이름이 있어야합니다. 탐색 등록 정보에 배치하는 경우 외래 키 이름이 있어야합니다. 당신이 사용하는 가치가 무엇인지 염두에 두는 한 그것은 당신에게 완전히 달려 있습니다.

+0

안녕하십니까, 마지막 행에 대해서는 그 외에 어떤 방법으로도 어떤 차이가 있습니까? – Yustme

+0

예, 'ForeignKey'를 배치 할 때 차이가 없습니다. – SOfanatic

관련 문제