我有一个Order.cs类,其中包含一个属性:
我得到以下错误:
public string OrderDate { get; set; } = DateTimeOffset.Now.ToString();
我有一个Order dbset。 使用EF,我想获取最近30天的所有订单。 我编写了以下代码:
var now = DateTimeOffset.Now;
var orders = _context.Orders.Where(o => ((now - DateTimeOffset.Parse(o.OrderDate)).TotalDays < 30)).ToList();
我得到以下错误:
System.InvalidOperationException: The LINQ expression 'DbSet<Order>
.Where(o => (__now_0 - DateTimeOffset.Parse(o.OrderDate)).TotalDays < 30)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
你有什么建议来解决这个问题吗?
编辑
我把OrderDate属性改成了
public DateTime OrderDate { get; set; } = DateTime.Now;
以下是与LINQ查询相关的内容:
var atm = DateTime.Now;
var orders = _context.Orders.Where(o => (o.OrderDate - atm).TotalDays < 30);
我仍然收到相同的错误信息。
DateTimeOffset.Parse
转换为SQL。尽量避免这样的转换。 - undefinedOrderDate
没有映射到表格上,因此EF无法为其生成SQL语句。 - undefined