【问题标题】:AspNetCore 2 oData - Missing context on get all identity usersAspNetCore 2 oData - 获取所有身份用户时缺少上下文
【发布时间】:2018-03-13 20:28:01
【问题描述】:

我尝试使用 oData v4 创建一个 Web api。

现在我尝试通过 oData 获取所有身份用户。

这是有效的:

[EnableQuery]
public class UsersController : Controller
{
    protected readonly UserManager<User> _userManager;

    public UsersController(UserManager<User> userManager)
    {
        _userManager = userManager;
    }

    private static List<User> _users = new List<User>
    {
        new User { Id = 1, Name = "Flo", Email = ""},
        new User { Id = 2, Name = "Felix", Email = ""},
        new User { Id = 3, Name = "Andreas", Email = ""},
        new User { Id = 4, Name = "Marco", Email = ""}
    };

    public IQueryable<User> Get()
    {
        return _users.AsQueryable();
    }

}

并返回此响应:

{"@odata.context":"http://localhost:55503/oData/$metadata#Users(Id)","value":[{"Id":1},{"Id":2},{"Id":3},{"Id":4}]}

当我更改控制器以返回所有身份用户时,这无法正常工作。

[EnableQuery]
public class UsersController : Controller
{
    protected readonly UserManager<User> _userManager;

    public UsersController(UserManager<User> userManager)
    {
        _userManager = userManager;
    }

    public IQueryable<User> Get()
    {
        return _userManager.Users.AsQueryable();
    }

}

它返回这个响应:

[{"Id":"35909773-8b53-4d68-a770-b7cdfcffd0de"}]

但响应缺少上下文。你能告诉我为什么吗?

【问题讨论】:

    标签: asp.net-core odata


    【解决方案1】:

    我解决了这个问题:

            var builder = new ODataConventionModelBuilder(serviceProvider);
    
            builder.EntitySet<User>("Users");
    
            return builder.GetEdmModel();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-12
      • 2018-08-14
      • 2020-03-26
      • 1970-01-01
      • 2015-10-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多