فرض کنید مدل زیر رو داریم
حال چگونه میتوانیم از Order بر اساس OrderStatus.Id فیلترینگ انجام بدیم ؟
خروجی
public class Order : AggregateRoot<int> { private DateTime _orderDate; public Address Address { get; private set; } public int? GetBuyerId => _buyerId; public int? _buyerId; public OrderStatus OrderStatus { get; private set; } public int _orderStatusId; private string _description; private bool _isDraft; private readonly List<OrderItem> _orderItems; public IReadOnlyCollection<OrderItem> OrderItems => _orderItems; protected Order() { _orderItems = new List<OrderItem>(); _isDraft = false; } public Order(string userId, string userName, Address address, int? buyerId = null) : this() { _buyerId = buyerId; _orderStatusId = OrderStatus.Submitted.Id; _orderDate = DateTime.UtcNow; Address = address; //AddOrderStartedDomainEvent(userId, userName); } }
public class OrderStatus : Enumeration { public static OrderStatus Submitted = new OrderStatus(1, nameof(Submitted).ToLowerInvariant()); public static OrderStatus AwaitingValidation = new OrderStatus(2, nameof(AwaitingValidation).ToLowerInvariant()); public static OrderStatus StockConfirmed = new OrderStatus(3, nameof(StockConfirmed).ToLowerInvariant()); public static OrderStatus Paid = new OrderStatus(4, nameof(Paid).ToLowerInvariant()); public static OrderStatus Shipped = new OrderStatus(5, nameof(Shipped).ToLowerInvariant()); public static OrderStatus Cancelled = new OrderStatus(6, nameof(Cancelled).ToLowerInvariant()); public OrderStatus(int id, string name) : base(id, name) { } }
var query = _orderQueryRepository.GetAll(x => x._buyerId == 52).AsNoTracking(); var s = await query.GridifyAsync(request.queryFilter); return s.Adapt<Paging<OrderQuery>>();
{ "buyerid": 0, "queryFilter": { "page": 1, "pageSize": 5, "orderBy": "id", "filter": "Order_OrderStatus_Id==1" } }
"message": "Property 'Order_OrderStatus_Id' not found.",