Использование OData в веб-API .NET Core для MongoDBC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Использование OData в веб-API .NET Core для MongoDB

Сообщение Anonymous »

OData теперь поддерживается в .NET Core и выпущенной версии 7.2.0. Но можно ли его использовать с MongoDB? Я искал, но не смог найти ничего, что говорило бы так или иначе.

РЕДАКТИРОВАТЬ:

Я нашел пакет 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET CORE 6 WEB API API ODATA $ Команда Expand не работает с EF CORE 6 IQUERYABLE с проекцией
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Модульное тестирование OData в .NET Core 6.0
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • C# .NET Core 6.0 — IQueryable, OData и сопоставленная функция, вызванная из оператора LINQ, не может быть переведена [ду
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»