0

私は次の列挙型を持っています:

namespace Common
{
    public enum VehicleType
    {
        Car=10,
        Bike=20
    }
}

VehicleTypeCommon.VehicleType を参照する名前で、EF デザイナーで参照列挙型を作成しました。edmx はModels名前空間にあるため、最終的に 2 つの異なる列挙型になります。

Common.VehicleType
Models.VehicleType

エンティティ オブジェクト インスタンスに列挙型を設定するには、キャストする必要があります。

Vehicle vehicle = new Vehicle();
vehicle.VehicleType = (Models.VehicleType)Common.VehicleType.Bike;

これにはいくつかの問題があります。

  1. 完全修飾名を使用する必要があります (列挙型の名前は、収集したものと同じでなければなりません)。
  2. どこにでもキャストする必要があります。
  3. Models名前空間が参照Commonしているため、循環参照を取得し、キャストするCommonには参照する必要があります。Models

これは簡単な説明です。リファレンスやジェネレーター テンプレートを変更することはできません。これは、非常に大きなプロジェクトでコードを大幅に変更することになるためです。

生成テンプレートが問題を引き起こしていると思います。これを回避する方法はありますか?

編集

EntityObject テンプレート ジェネレーターによって生成されたタイプ VehicleType のフィールドは次のようになります。

private VehicleType _VehicleType;

ここで、VehicleType は Models.VehicleType です

4

0 に答える 0