3

У меня есть проект OData, который был создан из шаблона веб-API (включая учетные данные).Добавить идентификатор ASP.NET (управление пользователями) в OData через веб-API 2

У меня есть класс ApplicationUser: IdentityUser.

У меня есть TournamentContext: IdentityDbContext класс.

У меня есть учетная запись AccountController по умолчанию, которая поставляется с шаблоном с атрибутом [RoutePrefix ("api/Account")].

В 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(); 
    } 

сейчас , Я хочу разоблачить управление учетной записью/пользователем через O API данных. Как это достичь?

Thanks, Janiv Ratson.

+0

Вы пытаетесь это сделать, сохраняя при этом апи-путь? – Schandlich

+0

Да, но я могу отказаться от него. – janiv

ответ

3

Вы можете создать ODataController для управления идентификацией пользователей с использованием строительных лесов:

1) правой кнопкой мыши на папку Controllers, Добавить -> Контроллер ...

2) выберите «Web API 2 OData контроллер с действиями , 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; 
    } 

(потому что ваш контекст данных iherited из IdentityDbContext, который имеет свойство IDbSet пользователей). Таким образом, есть ошибка

Множество наборов объектов на тип не поддерживаются. Объект устанавливает «ApplicationUsers» и «Пользователи» может как содержать экземпляры типа «WebApplication1.Models.ApplicationUser»

, если вы делаете замену.

5) последний - вы должны заменить в сгенерированном коде контроллера «db.ApplicationUsers» на «db.GetApplicationUsers()».