2012-07-02 3 views
-1

이 코드는 컴파일되지만 런타임 오류가 발생합니다. 기본적으로 엔티티 프레임 워크에서 저장된 proc을 실행하고 단일 객체를 반환하려고 시도합니다.Entity-Framework InvalidCastException

public static TowingCustomerVehicle GetTowingCustomerVehicle(int vehicleID) 
     { 
      using (ProductServiceEntities context = new ProductServiceEntities()) 
      { 
       TowingCustomerVehicle vehicle = (TowingCustomerVehicle)context.Vehicles 
         .Where(v => v.VehiclePK == vehicleID) 
         .Select(v => new TowingService2._0.Model.Towing.TowingCustomerVehicle 
         { 
          CurbWeight = (int)v.CurbWeight, 
          HitchSystemRating = (int)v.TowingCapacityMaximum, 
          FuelType = v.FuelType, 
          TopType = v.TopType, 
          TongueLoadRating = (v.TowingCapacityMaximum ?? 0), 
          IsCVT = v.IsAutoTransCVT ?? false, 
          DriveType = v.Driveline, 
          EPAClass = v.EPAClass, 
          Make = v.Make, 
          Model = v.Model 
         }); 

       vehicle.AttachedWiring = context.IsAttachedWiring(vehicleID).Count() > 0 ? true : false; 


       return vehicle; 
      } 
     } 

ERROR : 유형의 개체를 캐스팅 할 수 없습니다 'System.Data.Objects.ObjectQuery`1 [TowingService2._0.Model.Towing.TowingCustomerVehicle]'를 입력하는 코드

승에 대한 모든 아이디어 'TowingService2._0.Model.Towing.TowingCustomerVehicle'.

답변

1

선택하면 IEnumerable<TowingCustomerVehicle>가 반환됩니다. 선택 통화 마지막에 .First()을 추가해야합니다. 내가 결과 RHE 볼 수있는에서

TowingCustomerVehicle vehicle = context.Vehicles 
        .Where(v => v.VehiclePK == vehicleID) 
        .Select(v => new TowingService2._0.Model.Towing.TowingCustomerVehicle 
        { 
         CurbWeight = (int)v.CurbWeight, 
         HitchSystemRating = (int)v.TowingCapacityMaximum, 
         FuelType = v.FuelType, 
         TopType = v.TopType, 
         TongueLoadRating = (v.TowingCapacityMaximum ?? 0), 
         IsCVT = v.IsAutoTransCVT ?? false, 
         DriveType = v.Driveline, 
         EPAClass = v.EPAClass, 
         Make = v.Make, 
         Model = v.Model 
        }).First(); 
0

유형 ObjectQuery<TowingCustomerVehicle>의, 당신은 그 쿼리 유형 TowingCustomerVehicle의 하나의 항목이 필요합니다. 끝에 First()을 추가하거나 FirstOrDefault()을 추가하십시오. 그 후에 캐스팅은 필요 없습니다.

VS에서 이것을 컴파일하지 않았는지 확인해 보았지만 정상적으로 작동하는지 확인하지 않았습니다.

희망이 있습니다.