ASP.NET не может получить доступ к новому полю в таблице ролей - PullRequest
0 голосов
/ 25 августа 2018

Я только что расширил свою таблицу AspNetRoles следующим образом:

public class ApplicationRole : IdentityRole
{
    public ApplicationRole() : base() { }
    public String ApplicationId { get; set; }
    public AspNetApplications Application { get; set; }
}

Когда я добавил свою миграцию и обновил базу данных, появился столбец ApplicationId и дискриминатор.

Однако, когда ямне нужен доступ к данным из этой таблицы, я не могу получить доступ к новому полю:

List<ApplicationRole> data = (from ar in dbContext.Roles
     join a in dbContext.AspNetApplications
     on ar.ApplicationId equals a.Id
     select new ApplicationRole
     {
         Id = ar.Id,
         Name = ar.Name
         ApplicationId = (Unable to access this section)
     }).ToList();

Я пытался следовать этому руководству http://johnatten.com/2014/06/22/asp-net-identity-2-0-customizing-users-and-roles/#Extending-Identity-Role, и я добавил новый ApplicationRoleManager в свой IdentityConfig

public class ApplicationRoleManager : RoleManager<ApplicationRole>
    {
        public ApplicationRoleManager(IRoleStore<ApplicationRole, string> roleStore): base(roleStore)
        {
        }
        public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
        {
            return new ApplicationRoleManager(new RoleStore<ApplicationRole>(context.Get<ApplicationDbContext>()));
        }
    }

Когда я заполняю свою базу данных, ApplicationId заполняется без проблем.Только когда я пытаюсь получить данные из него, я сталкиваюсь с проблемами.

1 Ответ

0 голосов
/ 26 августа 2018

Звучит глупо, но можете ли вы проверить, если вы уже определили класс ApplicationRole в другом пространстве имен, возможно, тот, который вы хотите заполнить, происходит из другого пространства имен, в котором вы не определили ApplicationId

select new ApplicationRole
 {
     Id = ar.Id,
     Name = ar.Name , //or maybe because you do not have a comma after ar.Name
     ApplicationId = (Unable to access this section)
 }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...