2010-08-15 2 views
1

클래스를 기본 EF 방식으로 매핑했으며 모든 FK는 EntityCollection이므로 Bike.Wheels는 EntityCollection입니다.Query EntityCollection

휠과 어떻게 작동합니까?

  • 은 내가

내가 얻을 사용할 수있는 모든 wheel.Bolts을 얻으려면 휠

  • 을 통해 루프
  • 내가 원하는 1, 2 바퀴를 검색 할/선택/[] .

    내가 누락 된 항목이 있습니까?

  • 답변

    3

    음, 일부 작업은 매우 간단합니다. 다른 작업은 다소 번거롭기 때문에 쉬운 방법을 사용하기위한 몇 가지 접근법을 다시 디자인 할 수 있습니다. 당신은 보통의 배열 인덱스를 사용할 수 없기 때문에,

    using(BikeEntities ctx = new BikeEntities()) 
    { 
        // assuming you just somehow pick a bike to inspect the wheels for 
        Bike myBike = ctx.Bikes.FirstOrDefault(b => b.BikeID == 5); 
    
        foreach(Wheel w in myBike.Wheels) 
        { 
         // do something with your wheel 
         foreach(Bolt b in w.Bolts) 
         { 
          // do something to al the bolts on your wheel 
         }   
        } 
    } 
    

    컬렉션의 첫 번째, 두 번째 등을 얻기 약간 더 까다 롭습니다 : 모든 바퀴를 반복 할

    , 그냥 foreach 문을 사용합니다. 당신은 할 수 있습니다

    • .Skip() 방법을 사용 -하지만 컬렉션이 너무 큰 경우, 즉 하나의 객체 검색
    • 에 대한 약간 서투른, 당신은 그것은 List<T>에 "구체화"다음 배열 인덱싱
    • 을 사용할 수 있습니다

    그래서 중 당신은 다음과 같이 사용합니다

    Wheel firstWheel = myBike.Wheels.FirstOrDefault(); 
    Wheel secondWheel = myBike.Wheels.Skip(1).FirstOrDefault(); 
    

    를하거나 목록으로 컬렉션을 실현 :

    List<Wheel> myWheels = myBike.Wheels.ToList(); 
    
    Wheel firstWheel = myWheels[0]; 
    Wheel secondWheel = myWheels[1]; 
    
    +0

    그래, 그게 도움이되지만 ... 볼트에 대한 조인을 수행하는 방법이 없으므로 구체화 된 버전에 이미 db에서 선택된 볼트가 포함됩니다. –

    +0

    @Massive Boisson : 나는 당신이 의미하는 바를 정확히 모릅니다 ... 당신이 정교 할 수 있습니까? "볼트 조인"? 무엇과 함께? –

    +0

    @Massive Boisson : 자전거 객체가 데이터베이스에 있다면, 'Wheels' 속성에서'CreateSourceQuery()'메소드를 사용하고 그 결과'ObjectQuery '에'Include ("Bolts")를 호출하면됩니다. 목적. –