实体框架:无法创建类型为**的常量值.在此上下文中只支持基本类型或枚举类型
本文关键字:类型 上下文 支持 枚举 常量 框架 创建 实体 | 更新日期: 2023-09-27 18:16:23
我有这样的查询:
public override IEnumerable<Order> ExecuteQuery(MovieRentalContext database)
{
return from order in database.Orders
where (customer == null || customer.Id == order.CustomerId)
select order;
}
其中customer是类中的字段。有Order类
public class Order: Entity
{
[Required]
public Copy Copy { get; set; }
public Customer Customer { get; set; }
public DateTime OrderDate { get; set; }
public DateTime EstimatedReturnDate { get; set; }
public Salesman Salesman { get; set; }
public DateTime? ActualReturnDate { get; set; }
public decimal Price { get; set; }
[ForeignKey("Customer")]
public long CustomerId { get; set; }
}
实体包含Id。我想获取客户的订单,但是在执行查询时抛出了一个异常:
无法创建类型为>'MovieRental.DataAccess.Models.Customer'的常量值。在此上下文中只支持基本类型或枚举>类型。
我试了所有我找到的,但它仍然不工作。有什么问题吗?
我想说你的customer == null
代码导致了这一点。EF正试图将其转换为SQL,但客户不在该上下文中。请尝试将该条件置于查询之外。
public override IEnumerable<Order> ExecuteQuery(MovieRentalContext database)
{
if (customer != null)
{
return from order in database.Orders
where order.CustomerId == customer.Id
select order;
}
else
{
return from order in database.Orders
select order;
}
}