Вам нужно немного написать код, если вы расширяете код, а не модифицируете его.
Во-первых, вы можете создать новый класс запросов, аналогичный GetProducts_Action_Request
, который имеет ProductId
, чтобы использовать его для получения одного продукта. Например, скажем, GetProduct_Action_Request
:
public class GetProduct_Action_Request : BaseActionRequest
{
public int ProductId {get; set;}
}
И объект ответа, который имеет один продукт:
public class GetProduct_Action_Response : BaseActionResponse
{
public TB_ProductDTO TB_Product { get; set; }
}
Затем необходимо создать новое действие GetProduct_Action
, аналогичное GetProducts_Action
, И вы можете использовать SingleOrDefaultAsync
, чтобы вернуть единственный элемент Product, который удовлетворяет условию Id
:
public class GetProduct_Action : BaseEFAction<GetProduct_Action_Request, GetProduct_Action_Response>
{
private CRMSContext Context { get; }
private IMapper Mapper { get; }
public GetProduct_Action(ILogger<GetProduct_Action> logger, CRMSContext context, ITransactionManager scope, IMapper mapper) : base(logger, context, scope)
{
Context = context.ValidateAndConsumeNonNullableArgument(nameof(context));
Mapper = mapper.ValidateAndConsumeNonNullableArgument(nameof(mapper));
}
protected override async Task<GetProduct_Action_Response> PerformActionAsync(GetProduct_Action_Request request)
{
var tb_Product = await Context.TB_Products.SingleOrDefaultAsync(i=> i.Id == request.ProductId);
var tb_ProductDTO = Mapper.Map<IList<TB_ProductDTO>>(tb_Product);
return new GetProduct_Action_Response { TB_Product = tb_ProductDTO };
}
}
public class GetProduct_Action_Request : BaseActionRequest
{
public int ProductId {get; set;}
}
public class GetProduct_Action_Response : BaseActionResponse
{
public TB_ProductDTO TB_Product { get; set; }
}
Поэтому у вас есть 2 действия GetProduct_Action
для одного продукта на основе Id
и GetProducts_Action
для списка всех продуктов.