質問

私には、以下のlinq2sqlクエリー、および私設定の結果をPOCO.私POCO財ザ一覧の取得を行います。

public IQueryable<Models.Achievement> GetAchievements()
{
    return from a in _sqlDatabase.Achievements
        select new Models.Achievement
            {
                // Note: ToEnum is an extension method that converts an int -> the enum.
                AchievementType = a.AchievementTypeId.ToEnum<Models.AchievementType>(),
                DateTimeCreated = a.DateTimeCreated,
                UserId = a.UserId
            };
}

私のクエリを取得し、以下のエラーになります。

System.NotSupportedException: Method 'Models.AchievementType 
    ToEnum[AchievementType](int)' has no supported translation to SQL.

うーん。ができます難しく、結果をintに変換される私のカスタム列挙型?

役に立ちましたか?

解決

利用できるenums直接LINQ to SQLではない団体の枠組み);を変えるだけのタイプの物件にdbml/デザイナー)の完全指定の列挙型でのキャストします。するために呼んでいAchievementTypeはもちろん、この想定ストレート(キャスト)。

こなせるシナリオかを選択し、"選択の整数とみなして、その最終的なキャストでLINQ to-オブジェクト(通AsEnumerable()).きも直キャスト(このは十分にはリーの拡張方法

select new {..., AchievementType = (AchievementType) foo.Bar, ...}

せた場合には、 Models.Achievement 型式で定義されてdbmlはできませんをこのようになっております-いシンプルを選択します。っていない場合には、db-モデルです。 こちらの'sの関連例では、マッピングの文字列をenumsでLINQ to SQL.

そのスーツ、その他のアプローチを宣言するの列挙型の財産としてのシムでは一部クラスです。また例えば、 こちらの (EFすることが明らかにでることがありますのでご注意くだいす使用できませんのenum物件 Where 条項などでかマップのモデルです。

他のヒント

たぶん、あなたはあなたModels.Achievement宣言でこのような何かを試みることができます

  AchievementType achievementType{
    get
      {
         return this.AchievementTypeId.ToEnum<Models.AchievementType>();
      }
      set
      {
        this.AchievementTypeId = (int)value;
      }
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top