1

我一直在尝试基于位于此处的 OpenOrderFramework 在 MVC 中建立自己的在线商店 - https://github.com/lbacaj/OpenOrderFramework

除了尝试登录、注册或完成结帐之外,我已经设法让一切正常工作——基本上与身份有关。

我不断收到的错误是:

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");

 }

根据我的尝试,对于我觉得奇怪的同一字段,无效的列名错误最多可能出现三次。

我查看了在 UserManager 中生成的 SQL 查询字符串,这就是它返回的内容:

+            
((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”。

任何帮助或建议将不胜感激。这让我发疯了。

4

0 回答 0