相关疑难解决方法(0)

C#中的动态odata服务来自运行时数据层

我正在尝试从表中的表创建动态odata服务,这些服务在运行时才会知道.因此,在我的Web应用程序开始时,用户选择一个数据库,在C#中我找到该数据库中的所有表.

现在困难的部分是我想为数据库中的每个表创建odata服务端点,并在我的Web应用程序中相应地使用它们.问题是我不知道如何动态地做到这一点.编译时已知的数据库表有很多例子,但在这种情况下,直到我的用户第一次使用我的应用程序时才会有它们.

.net c# odata asp.net-web-api

22
推荐指数
1
解决办法
6593
查看次数

在.NET Core Web API中为MongoDB使用OData

现在,.NET Core支持OData,7.2.0已发布.但它可以与MongoDB一起使用吗?我已经搜索过,但是找不到任何说法的东西.

编辑:

我找到了一个nuget包https://www.nuget.org/packages/microsoft.aspnetcore.odata,ConfigureServices我在这里添加了这个:

这似乎对我有用:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddOData();
    services.AddSingleton<IODataModelManger, ODataModelManager>(DefineEdmModel);
    ...
}

private ODataModelManager DefineEdmModel(IServiceProvider services)
{
    var modelManager = new ODataModelManager();

    var builder = new ODataConventionModelBuilder();
    builder.EntitySet<TestDTO>(nameof(TestDTO));
    builder.EntityType<TestDTO>().HasKey(ai => ai.Id); // the call to HasKey is mandatory
    modelManager.AddModel(nameof(Something), builder.GetEdmModel());

    return modelManager;
}
Run Code Online (Sandbox Code Playgroud)

调节器

[HttpGet("all")]
public async Task<IQueryable<TestDTO>> 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 …
Run Code Online (Sandbox Code Playgroud)

c# mongodb odata asp.net-web-api asp.net-core

11
推荐指数
1
解决办法
3689
查看次数

标签 统计

asp.net-web-api ×2

c# ×2

odata ×2

.net ×1

asp.net-core ×1

mongodb ×1