我一直在尝试基于位于此处的 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”。
任何帮助或建议将不胜感激。这让我发疯了。