C# ASP.Net标识未创建用户

C# ASP.Net标识未创建用户,c#,asp.net,entity-framework,asp.net-identity,C#,Asp.net,Entity Framework,Asp.net Identity,我已经使用ASP.NETIdentity好几次了。在一个新项目中,我似乎在创建用户时遇到了问题 调用\u userManager.Create()时,出现以下错误 The string '{ Name: IX_UserId, Order: 0 }' was not in the expected format to be deserialized by the IndexAnnotationSerializer. Serialized values are expected to

我已经使用ASP.NETIdentity好几次了。在一个新项目中,我似乎在创建用户时遇到了问题

调用
\u userManager.Create()
时,出现以下错误

  The string '{ Name: IX_UserId, Order: 0 }' was not 
  in the expected format to be deserialized by the 
  IndexAnnotationSerializer. Serialized values are expected to have 
  the format '{ Name: 'MyIndex', Order: 7, IsClustered: True, 
               sUnique: False } { } { Name: 'MyOtherIndex' }'.
我尝试过使用以下DbContext,除了类名之外,它与我在另一个项目中使用的DbContext相同,可以正常工作

public partial class ISIdentityDbContext : IdentityDbContext<IdentityUser>
    {

        public ISIdentityDbContext()
            : base("ISIdentityDbContext")
        { }

        public DbSet<ApplicationUserUserInfoMap> ApplicationUserUserInfoMap { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            // asp.net identity - call the tables something else..
            modelBuilder.Entity<IdentityRole>().ToTable("ApplicationRoles");
            modelBuilder.Entity<IdentityUserClaim>().ToTable("ApplicationUserClaims");
            modelBuilder.Entity<IdentityUserLogin>().ToTable("ApplicationUserLogins");
            modelBuilder.Entity<IdentityUserRole>().ToTable("ApplicationUserRoles");
            modelBuilder.Entity<IdentityUser>().ToTable("ApplicationUser");  
        }              

    }
我完全被难住了…无论我是重建数据库以匹配标准身份用户还是使用扩展版本,我都会得到顶部显示的相同异常

我可能错过了什么,虽然我不知道是什么


有什么想法吗?

我也有同样的问题

我只是创建了一个没有密码的用户,然后使用密码哈希器选择该用户,并将其作为一种解决方法再次存储。只有当我设置用户名和密码时,它才会失败-我在数据库的代码播种中遇到了它。

好的-我修复了它

我打算删除这个问题,因为事实证明,这是一个非常狭窄的问题

这就是说,我将把它留在这里,让任何其他人努力让EF发挥良好的数据库,而不是所有通过EF

在我们的例子中,我们有一个数据库,它不会根据它构建EF(这是一个非常旧的数据库)-但是一些新的部分将被EF'ed;ASP.Net标识部分

事实证明,我的问题实际上与_umigrationhistory表有关

一旦我将
DbInterceptor
添加到我的
DbContext
中,我就可以看到导致错误的实际SQL


我删除了_MigrationHistory表中的条目,一切正常。

它似乎在抱怨用户表上的索引,您添加了一个吗?我也尝试过,只是使用IdentityUser,也遇到了同样的问题,所以不确定它是如何出现问题的。我想您尝试过使用全新的数据库吗?换句话说,让EF为你创造一切。EF是为我创造身份的东西。在这种情况下,我不能使用全新的数据库,因为我们正在扩展旧的遗留系统。EF只创建标识部分。您是否添加了自己的索引
IX_UserId
似乎是UserId列上的索引。我仍然收到相同的问题。这太令人沮丧了。这个错误消息根本没有意义!通常我让EF代码先生成表。然后对生产进行相应的更改,并用生成的迁移历史数据更新迁移历史数据。我通常会——尽管此数据库是一个旧数据库,无法生成EF模型——本质上,使用EF和非EF代码进行混合。只是为了澄清一下。当EF找不到_MigrationHistory时,它会做很多回切工作、一些数据库查询、异常处理等等。您可以简单地让EF在第一次调用时构建一个空DB。然后将迁移历史数据复制到普通数据库中。EF将被欺骗以确保DB正常。
 using (ISIdentityDbContext context = new ISIdentityDbContext())
            {                
                _userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(context));
                IdentityUser user = new IdentityUser();
                user.UserName = "darren";
                _userManager.Create(user, "password");
            }
using (ISIdentityDbContext context = new ISIdentityDbContext())
            {
                _userManager = new UserManager<LegacyApplicationUser>(new UserStore<LegacyApplicationUser>(context));
                ApplicationUserUserInfoMap map = new ApplicationUserUserInfoMap();
                map.UserGUID = "anIdFromAnotherTable";

                LegacyApplicationUser user = new LegacyApplicationUser();
                user.UserInfoMap = map;
                user.UserName = "darren";
                _userManager.Create(user, "password");
            }
   public class LegacyApplicationUser : IdentityUser
    {
        public virtual ApplicationUserUserInfoMap UserInfoMap { get; set; }
    }

    public class ApplicationUserUserInfoMap
    {
        public int ID { get; set; }
        public string UserGUID { get; set; }
    }