gpt4 book ai didi

c# - Entity Framework : Unable to create a constant value of type **. 此上下文仅支持原始类型或枚举类型

转载 作者:行者123 更新时间:2023-11-30 23:19:09 25 4
gpt4 key购买 nike

我有这个问题:

     public override IEnumerable<Order> ExecuteQuery(MovieRentalContext database)
{

return from order in database.Orders
where (customer == null || customer.Id == order.CustomerId)
select 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。我想获取客户的订单,但在执行查询期间抛出异常:

Unable to create a constant value of type >'MovieRental.DataAccess.Models.Customer'. Only primitive types or enumeration >types are supported in this context.

我尝试了我发现的一切,但它仍然不起作用。有什么问题?

最佳答案

我会说你的 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;
}

}

关于c# - Entity Framework : Unable to create a constant value of type **. 此上下文仅支持原始类型或枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40440938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com