Неверное имя столбца 'UserId' и 'IdentityUser_Id' при попытке войти в систему / зарегистрироваться - PullRequest
0 голосов
/ 07 июня 2018

Я пытался построить свой собственный онлайн-магазин в MVC на основе OpenOrderFramework, расположенного здесь - https://github.com/lbacaj/OpenOrderFramework

Мне удалось заставить все работать отлично, за исключением случаев, когда я пытаюсь войти в систему., зарегистрируйтесь или завершите оформление заказа - в основном все, что связано с Identity.

Я получаю ошибку:

Invalid column name 'UserId'.

или

Invalid column name 'IdentityUser_UserId'.

Как частьВ процессе, я создал свои собственные пользовательские таблицы идентичности AspNet (AspNetRoles, AspNetUserClaims, AspNetUserLogins, AspNetUserRoles, AspNetUsers)

Когда я говорю «пользовательский», все они следуют стандартному формату по умолчанию, за исключением таблицы AspNetUsers, которая имеет некоторые дополнительныеновые поля там.Тем не менее они добавляются в проект следующим образом:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
 base.OnModelCreating(modelBuilder); // This needs to go before the other rules!

modelBuilder.Entity<ApplicationUser>().ToTable("TSSC_AspNetUsers", "dbo");
modelBuilder.Entity<IdentityUser>().ToTable("TSSC_AspNetUsers", "dbo");
modelBuilder.Entity<IdentityUserRole>().ToTable("TSSC_AspNetUserRoles", "dbo");
modelBuilder.Entity<IdentityRole>().ToTable("TSSC_AspNetRoles", "dbo");
modelBuilder.Entity<IdentityUserLogin>().ToTable("TSSC_AspNetUserLogins", "dbo");
modelBuilder.Entity<IdentityUserClaim>().ToTable("TSSC_AspNetUserClaims", "dbo");

 }

В зависимости от того, что я пытаюсь, ошибка имени недопустимого столбца может появляться до трех раз для одного и того же поля, которое я нахожу нечетным.

Я посмотрел на строку SQL-запроса, генерируемую внутри UserManager, и вот что он возвратил:

+            
((Microsoft.AspNet.Identity.UserManager<TSSC.Models.ApplicationUser,string>)(UserManager)).Users    {SELECT 
'0X0X' AS [C1], 
[Extent1].[IdentityUser_Id] AS [IdentityUser_Id], 
[Extent1].[Email] AS [Email], 
[Extent1].[EmailConfirmed] AS [EmailConfirmed], 
[Extent1].[PasswordHash] AS [PasswordHash], 
[Extent1].[SecurityStamp] AS [SecurityStamp], 
[Extent1].[PhoneNumber] AS [PhoneNumber], 
[Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
[Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled], 
[Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
[Extent1].[LockoutEnabled] AS [LockoutEnabled], 
[Extent1].[AccessFailedCount] AS [AccessFailedCount], 
[Extent1].[UserName] AS [UserName]
FROM [dbo].[TSSC_AspNetUsers] AS [Extent1]
WHERE [Extent1].[Discriminator] = N'ApplicationUser'}    
System.Linq.IQueryable<TSSC.Models.ApplicationUser> 
{System.Data.Entity.DbSet<TSSC.Models.ApplicationUser>}

Как вы можете видеть, он ищет столбец с именем 'IdentityUser_UserId', который несуществовать.Поле на самом деле 'Id'.

Любая помощь или совет будут оценены.Это сводит меня с ума.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...