2012-12-14 3 views
5

Visual Studio에서 엔터티 프레임 워크 위자드를 사용하여 db-model을 만들었습니다. stocktype2job 테이블을 사용하여 서로 관련이있는 두 개의 테이블 (작업, stocktype)이 있습니다. 나는 이런 식으로 뭔가를 할 수있는 작업 개체와 Entity Framework - 탐색 속성 만들기

Job <------- no direct relation/navigation property --------> StockType 
|                 | 
|                 | 
---------------------> StockType2Job -----------------------------> 

enter image description here

, ... 잘 작동합니다
EntitiesObject db = new EntitiesObject(); 
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40); 

List<StockType> stockTypes = new List<StockType>; 
foreach (StockType2Job st2j in job.StockType2Jobs) 
    { 
     stockTypes.add(st2j.StockType); 
    } 

. 하지만 작업 엔티티에서 탐색 속성을 만드는 방법이있어서 이런 식으로 쓸 수 있습니까? 당신의 친절한 도움말

EntitiesObject db = new EntitiesObject(); 
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40); 

List<StockType> stockTypes = job.StockTypes; // <<----- 

덕분에 아포

답변

2

그것은 StockType2Jobs은 당신이 많은 많은지도를 할 수 있도록 StockType과 작업하는 외래 키를 포함하지 않는 (자기 기준에서) 분명하다 네비게이션 속성 job.StockTypes과의 관계 따라서 StockTypejob.StockType2Jobs을 통해 수집하는 다른 작업은 수행 할 수 없습니다. 그러나 그것은 큰 문제가 아니다 :

List<StockType> stockTypes = job.StockType2Jobs.Select(x => x.StockType); 

당신은 매핑되지 않은 특성 job.StockTypes이 포장 유혹을받을 수도 있지만, 대개는이 작업을 수행하는 것은 좋은 생각이 아니다.

1

이 같은 것을보십시오 :

var stocksTypes = from st in db.StockType 
    from stj in st.StockType2Job where stj.Job.IdJob==40 select st; 
  • 이 코드는 그냥 테이블을 "결합"새로운 탐색 속성을 생성하지 않습니다. 나는 StockType2Jobs 테이블이 좋은 이유를 위해 존재한다는 점을 강조한다.

EF와 N 대 N 관계를 처리하는 방법을 살펴 보는 것이 좋습니다.

일부 링크 [1][2]

희망은 도움

+0

의심의 여지 가이 작동하지만 난 더 우아한 방법이지만 어쨌든 thx 때 linq를 사용하고 싶지 않아! –

관련 문제