模型类中的计算字段给出了异常

本文关键字:异常 字段 计算 模型 | 更新日期: 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);
}

OrdersUsers的相关表

模型类中的计算字段给出了异常

当使用LINQ to Entities时,LINQ表达式被转换为要发送到数据库的SQL查询。这是为了避免整个表被拉入内存。

您的问题是,因为Active没有映射,所以数据库对它一无所知,因此无法进行计算。

您需要将Active移到数据库中,或者将LINQ语句更改为仅查询数据库中的列