2014-11-13 2 views
0

주문, 조직 및 주문 조직의 세 가지 모델이 있습니다.EF - 선택 (합성) 외래 키 선택 방법

OrderOrganisation의 존재는 필수는 아니지만 ... EF를 알리는 방법을 모르겠습니다.

현재 쿼리를 작성하는 경우 외부 조인 대신 내부 조인을 사용하여 OrderOrganisation에 가입합니다.

나는 가능한 한 모델의 일부로 그것을하고 싶지 않다. (큰 데이터베이스와 논리로 문맥 단편을 사용한다고 생각한다.)

여기 내 모델입니다.

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

    public virtual ICollection<OrderOrganisation> OrderOrganisations { get; set; } 
} 

public class Organisation 
{ 
    public int Id { get; set; } 

    public virtual ICollection<OrderOrganisation> OrderOrganisations { get; set; } 
} 

public class OrderOrganisation 
{ 
    [Key, Column(Order = 0)] 
    public int OrderId { get; set; } 

    [Key, Column(Order = 1)] 
    public int OrganisationId { get; set; } 

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

    [ForeignKey("OrganisationId")] 
    public virtual Organisation Organisation { get; set; } 
} 

무엇을 포함시켜야합니까?

나는 nullable을 만들 필요가 있다고 가정하지만, 나는 무엇을 해결할 수 없다.

감사합니다.

답변

0

EF의 경우에는 크로스 테이블을 만들 필요가 없습니다. 아래 코드는 충분하다고 생각합니다.

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

    public virtual ICollection<Organisation> OrderOrganisations { get; set; } 
} 

public class Organisation 
{ 
    public int Id { get; set; } 

    public virtual ICollection<Order> OrderOrganisations { get; set; } 
} 

그러면 EF가 당신에게 organisationOrders라는 이름의 테이블을 생성합니다.

+0

테이블이 이미 있습니다. db를 변경하지 않고 EF와 함께 작업해야합니다. – Beakie

+0

db가 이미 생성 된 경우 왜 처음에는 db를 사용하지 않는가? Visual Studio에 그대로 두어 클래스를 만듭니다. – cCcik

+0

데이터베이스에 필요한 외래 키 등이 모두 포함되어 있지 않기 때문에 – Beakie