3
我有一個類(由我的數據庫中的EF構建),它有一個標誌字段。該字段作爲名爲CategoryEnum的列中的int存儲在數據庫中。我有一個指定標誌的允許值的枚舉:在實體框架中使用標誌Where子句
[Flags]
public enum RuleCategories
{
None = 0x0000,
ApplicantBased = 0x0001,
LocationBased = 0x0002,
PolicyBased = 0x0004,
PropertyBased = 0x0008
}
當我嘗試檢索使用LINQ的對象實體
var allRules = from r in context.Rules
where ((r.CategoryEnum & (int)categories) != 0)
select r;
我得到這個錯誤:
無法創建類型'閉包類型'的常量值。在此上下文中僅支持基本類型(如Int32,String和Guid)。
,或者,如果我嘗試將實體值轉換成枚舉
var allRules = from r in context.Rules
where (((RuleCategories)r.CategoryEnum & categories) != 0)
select r;
我得到一個不同的錯誤:
無法投類型「System.Int32」鍵入RuleCategories'。 LINQ to Entities僅支持投射實體數據模型基元類型。
如何根據標誌選擇實體?
謝謝