2017-12-05 10 views
1

나는 다음과 같이 정의 된 동일한 테이블에서 두 외국 키가 작동하지 동일한 테이블에서 두 개의 외래 키 :엔티티 프레임 워크 코드 첫 번째 -

modelBuilder.Entity<OfferTemplate>() 
      .HasRequired(ca => ca.CompanyAgentBuyer) 
      .WithMany(t => t.OfferTemplatesAsBuyer) 
      .HasForeignKey(ca => ca.CompanyAgentBuyer_CompanyAgentID) 
      .WillCascadeOnDelete(false); 

modelBuilder.Entity<OfferTemplate>() 
      .HasOptional(ca => ca.CompanyAgentBroker) 
      .WithMany(t => t.OfferTemplatesAsBroker) 
      .HasForeignKey(ca => ca.CompanyAgentBroker_CompanyAgentID) 
      .WillCascadeOnDelete(false); 

:이 설정을 가지고 모델에

public class OfferTemplate { ... 
[ForeignKey("CompanyAgentBuyer_CompanyAgentID")] 
[InverseProperty("OfferTemplatesAsBuyer")] 
public virtual CompanyAgent CompanyAgentBuyer { get; set; } 

[ForeignKey("CompanyAgentBroker_CompanyAgentID")] 
[InverseProperty("OfferTemplatesAsBroker")] 
public virtual CompanyAgent CompanyAgentBroker { get; set; } 

public int CompanyAgentBuyer_CompanyAgentID { get; set; } 
public int? CompanyAgentBroker_CompanyAgentID { get; set; } 
... 
}  

을 지금까지 쿼리를 수행 할 때를 제외하고는 모든 것이 작동합니다.

var templates = from user in context.UsersInformation 
          from cTemplate in context.OfferTemplates 
          where user.User.Equals(userID) && cTemplate.Company == user.Company 
          select cTemplate; 

var x = templates.FirstOrDefault().CompanyAgentBuyer; 

ID 속성 (CompanyAgentBuye r_CompanyAgentID & CompanyAgentBroker_CompanyAgentID) 인스턴스가 채워지지 않습니다 (이 경우 x). Include 메서드를 사용하여 시도했지만 작동하지 않았다. 내가 누락 된 아이디어가 있습니까?

 modelBuilder.Entity<CompanyAgent>() 
      .HasMany(e => e.OfferTemplatesAsBroker) 
      .WithOptional(e => e.CompanyAgentBroker) 
      .HasForeignKey(e => e.CompanyAgentBroker_CompanyAgentID); 

     modelBuilder.Entity<CompanyAgent>() 
      .HasMany(e => e.OfferTemplatesAsBuyer) 
      .WithRequired(e => e.CompanyAgentBuyer) 
      .HasForeignKey(e => e.CompanyAgentBuyer_CompanyAgentID) 
      .WillCascadeOnDelete(false); 

지금이 작동 :

+0

어디에서 포함합니까? 조인 및 프로젝션 쿼리를 수행하므로 쿼리 재 그룹화 후에 포함되지 않으면 포함되지 않습니다. – DevilSuichiro

+0

@DevilSuichiro 감사합니다. 아니요, 지금 포함을 사용하고 있지 않습니다. – paburgos

답변

0

나는이에 모델을 변경 끝낸다.