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

时间:2014-03-10 07:53:15

标签: c# linq entity-framework

我在执行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的相关表格。

1 个答案:

答案 0 :(得分:10)

使用LINQ to Entities时,LINQ表达式将转换为要发送到数据库的SQL查询。这样就不会将整个表拉入内存。

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

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