我在执行Linq查询时遇到异常:
LINQ to中不支持指定的类型成员“Active” 实体。仅初始化程序,实体成员和实体导航 支持属性。
模型类
public class User : Entity
{
//Many properties skipped
[NotMapped]
public bool Active
{
get
{
return Orders.Any(c =>
c.Active && (c.TransactionType == TransactionType.Order ||
c.TransactionType == TransactionType.Subscription));
}
}
}
提供异常的Linq查询
public IEnumerable<User> GetInactiveUsersForSuspensionNotification()
{
return _userRepository.GetAll()
.Include(i=>i.Orders)
.Where(w => w.Active == false);
}
Orders
是Users
的相关表格。
答案 0 :(得分:10)
使用LINQ to Entities时,LINQ表达式将转换为要发送到数据库的SQL查询。这样就不会将整个表拉入内存。
您的问题是因为Active未映射,因此数据库对此一无所知,因此无法进行计算。
您需要将Active移动到数据库中或将LINQ语句更改为仅查询数据库中的列