РЕДАКТИРОВАТЬ:
Я нашел пакет nuget https://www.nuget.org/packages/microsof ... core.odata и в ConfigurationServices я добавил это:
И мне кажется, это работает:
Код: Выделить всё
public void ConfigureServices(IServiceCollection services)
{
...
services.AddOData();
services.AddSingleton(DefineEdmModel);
...
}
private ODataModelManager DefineEdmModel(IServiceProvider services)
{
var modelManager = new ODataModelManager();
var builder = new ODataConventionModelBuilder();
builder.EntitySet(nameof(TestDTO));
builder.EntityType().HasKey(ai => ai.Id); // the call to HasKey is mandatory
modelManager.AddModel(nameof(Something), builder.GetEdmModel());
return modelManager;
}
Код: Выделить всё
[HttpGet("all")]
public async Task Get()
{
// plug your entities source (database or whatever)
var test = await TestService.GetTest();
var modelManager = (IODataModelManger)HttpContext.RequestServices.GetService(typeof(IODataModelManger));
var model = modelManager.GetModel(nameof(Something));
var queryContext = new ODataQueryContext(model, typeof(TestDTO), null);
var queryOptions = new ODataQueryOptions(queryContext, HttpContext.Request, Provider);
return queryOptions
.ApplyTo(test, new ODataQuerySettings
{
HandleNullPropagation = HandleNullPropagationOption.True
}, null)
.Cast();
}
Код: Выделить всё
public async Task GetTest()
{
return await GenericRepository.TestAll();
}
Код: Выделить всё
public async Task TestAll()
{
var res = new GetManyResult();
try
{
DateTime startTime = DateTime.Now;
var collection = GetCollection().AsQueryable();
var entities = collection.ToArray().AsQueryable();
return entities
}
Я имею в виду, не должна ли коллекция содержать только те элементы, которые соответствуют фильтрам, будучи более оптимизированными?
Если да, то как мне этого добиться?
Подробнее здесь: https://stackoverflow.com/questions/452 ... or-mongodb