gpt4 book ai didi

c# - 通过 Web API 2 将 ASP.NET 身份(用户管理)添加到 OData

转载 作者:行者123 更新时间:2023-11-30 15:30:51 30 4
gpt4 key购买 nike

我有一个从 Web API 模板(包括凭据)创建的 OData 项目。

我有一个 ApplicationUser:IdentityUser 类。

我有一个 TournamentContext : IdentityDbContext 类。

我有带有 [RoutePrefix("api/Account")] 属性的模板附带的默认 AccountController。

在 WebApiConfig.cs 中对于我有的 web api 模板默认路由

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new {id = RouteParameter.Optional});

对于我添加的 OData 支持:

config.Routes.MapODataRoute("odata", "odata", GetModel(),
new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));

private static IEdmModel GetModel()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Tournament>("Tournaments");
return builder.GetEdmModel();
}

现在,我想通过 OData API 公开帐户/用户管理。我该如何实现?

谢谢,贾尼夫·拉森。

最佳答案

您可以使用脚手架创建 ODataController 来管理用户身份:

1) 鼠标右键单击 Controllers 文件夹,添加 -> Controller ...

2) 选择“Web API 2 OData Controller with actions, Entity Framework”

3) 在对话框中选择为应用程序用户生成的模型类 - 默认情况下是 ApplicationUser (WebApplication1.Models) - 以及适当的数据上下文

4) 生成完成后,您应该替换自动添加到您的数据上下文中的 DbSet 属性声明

    public System.Data.Entity.DbSet<WebApplication1.Models.ApplicationUser> ApplicationUsers { get; set; }

有方法声明

    public DbSet<ApplicationUser> GetApplicationUsers()
{
return (DbSet<ApplicationUser>) Users;
}

(因为您的数据上下文继承自 IdentityDbContext,它具有 IDbSet Users 属性)。所以有错误

Multiple object sets per type are not supported. The object sets 'ApplicationUsers' and 'Users' can both contain instances of type 'WebApplication1.Models.ApplicationUser'

除非您进行更换。

5) 最后 - 您应该将生成的 Controller 代码“db.ApplicationUsers”替换为“db.GetApplicationUsers()”。

关于c# - 通过 Web API 2 将 ASP.NET 身份(用户管理)添加到 OData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21547005/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com