模型类中的计算字段给出了异常
本文关键字:异常 字段 计算 模型 | 更新日期: 2023-09-27 17:49:27
我在执行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
的相关表
当使用LINQ to Entities时,LINQ表达式被转换为要发送到数据库的SQL查询。这是为了避免整个表被拉入内存。
您的问题是,因为Active没有映射,所以数据库对它一无所知,因此无法进行计算。
您需要将Active移到数据库中,或者将LINQ语句更改为仅查询数据库中的列