Я пытался построить свой собственный онлайн-магазин в 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'.
Любая помощь или совет будут оценены.Это сводит меня с ума.