どのようにこのLinq2Sqlを列挙型には、選択条項?
-
21-08-2019 - |
質問
私には、以下の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;
}
}
所属していません StackOverflow