我想知道 EF-Core 是否为我们提供了拥有已使用 where 子句“预过滤”的属性的能力?
例如:
我有一张
Users
的桌子(..因此..DbSet<User> Users
。)
每个用户可以有零到多个Orders
(..因此DbSet<Order> Orders
)。
所以用户看起来像:
public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public List<Order> Orders { get; set; }
}
所以现在我想要拥有一个最新订单的房产:
例如
public Order MostRecentOrder { get; set; }
这将由硬编码规则决定:最近的订单。
这可能吗?
否则我觉得我必须在我关心这个属性的地方编写的每个 EF-core 查询中都有这个 LINQ 查询。
另外,我曾经尝试创建一个扩展方法,但是 EF 查询生成器或其他东西崩溃了,说它无法将其转换为 SQL。
那么,这可能吗?
首先,您可以使用
将列表设置为 Id 降序排列OrderByDescending(x => x.Id)
然后使用后
FirstOrDefault()
您可以获取最近的订单。
或者如果您想使用一行设置它,那么您可以使用以下代码
Order MostRecentOrder = await Orders.OrderByDescending(x => x.OrderId).FirstOrDefault();