-1

このコードはコンパイルされますが、実行時エラーが発生します。基本的に、エンティティ フレームワークでストアド プロシージャを実行し、単一のオブジェクトを返そうとしているだけです。w についてのアイデア

コード:

 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;
            }
        }

エラー: タイプ 'System.Data.Objects.ObjectQuery`1[TowingService2._0.Model.Towing.TowingCustomerVehicle]' のオブジェクトをタイプ 'TowingService2._0.Model.Towing.TowingCustomerVehicle' にキャストできません。

4

2 に答える 2

1

Selectはを返しますIEnumerable<TowingCustomerVehicle>.First()選択呼び出しの最後に追加する必要があります。

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();
于 2012-07-02T15:21:50.890 に答える
0

私が見ることができるものから、結果はタイプであり、そのクエリからObjectQuery<TowingCustomerVehicle>のタイプのアイテムが1つ必要です。TowingCustomerVehicle最後に追加First()する またはFirstOrDefault(). その後、キャストは必要ありません。

VSでこれを試してコンパイルするかどうかを確認していませんが、正常に動作するはずです。

それが役に立てば幸い。

于 2012-07-02T15:23:28.253 に答える