沒法建立類型的常量值。此上下文僅支持基元類型或枚舉類型。

場景重現

在一段 ef 查詢中:c#

var query = db.Users.AsQueryable();
query = query.Where(o => !ignoreUsers.Contains(o)); // 這裏用了 !Contains 來實現 not in
var list = query.ToList();

出現以下異常:code

沒法建立類型 Models.User 的常量值。此上下文僅支持基元類型或枚舉類型。

問題緣由

是在查詢中使用了複雜類型作in/ not in致使的.class

解決辦法

Contains中的複雜類型,簡化爲簡單類型再操做,好比:把User改成UserId.List

var query = db.Users.AsQueryable();
query = query.Where(o => !ignoreUserIds.Contains(o => o.UserId)); // 這裏用了 !Contains 來實現 not in
var list = query.ToList();
相關文章
相關標籤/搜索