Skip to content

Neue Query erstellen

Eine Query wird von der Basis-Klasse EisQuery abgeleitet und im Unterverzeichnis Extension / Query abgelegt. Die Implementierung erfolgt gemäss folgendem Beispiel:

using Eis.Framework.Business.Base.Persistence;
using Eis.Framework.Business.Base.Query;

namespace Eis.MyDemo.Service.Demo.Extension;

internal class QueryDemoEntities : EisQuery
    .WithResult<IDemoEntity>
    .WithInput<QueryDemoEntitiesInput>
    .AsStandalone
{

    private readonly IUnitOfWork _unitOfWork;

    public QueryDemoEntities(IUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork;
    }

    public IQueryConfigurator<IDemoEntity, QueryDemoEntitiesInput> GetQueryConfigurator(IQueryConfigurator<IDemoEntity, QueryDemoEntitiesInput> configurator)
    {
        return configurator.ConfigureColumnsForType()
            .SetDefaultOrderBy(e => e.Text)
            .RegisterUniversalFilter(e => e.Text, i => i.Text ?? "");
    }

    public void RegisterInputParameters(IInputParameterRegisterService<QueryDemoEntitiesInput> registerService)
    {
        registerService.RegisterFor(i => i.Text)
            .SetOptional();
    }

    public IQueryable<IDemoEntity> Execute(IQueryContext<QueryDemoEntitiesInput> configurator)
    {
        return _unitOfWork.Linq<IDemoEntity>().Where(e => e.DeletedOn == null);
    }
}

internal record QueryDemoEntitiesInput(
    string? Text
);