【问题标题】:Create new AspNetUsers object requires ID MVC创建新的 AspNetUsers 对象需要 ID MVC
【发布时间】:2016-03-14 11:45:24
【问题描述】:

我正在尝试将一个新的 AspNetUsers 对象作为管理员帐户添加到我的项目中。 在我的 Global.asax 中,我调用了一个静态方法来生成该用户。我就是这样做的:

if (!db_entities.AspNetUsers.Any(u => u.Email.Equals("text")))
{
    PasswordHasher hasher = new PasswordHasher();
    string adminPassword = "test";

    AspNetUsers adminAccount = new AspNetUsers
    {
        Email = "text",
        UserName = "text",
        PasswordHash = hasher.HashPassword(adminPassword),
        SecurityStamp = Guid.NewGuid().ToString()
    };

    db_entities.AspNetUsers.Add(adminAccount);
    db_entities.SaveChanges();
}

调用此方法时,会出现DbEntityValidationException,并在内部异常中告诉我需要 Id 字段。 实际上,我使用“相同”代码在项目的其他部分创建对象,并且 Id 始终由系统提供。我找到了一个帖子,首先打电话给SaveChanges(),但它不起作用,因为 Id 总是丢失。

【问题讨论】:

  • 您是否将数据库中AspNetUsers 表的自动增量设置为ON
  • 啊,由于它是自动生成的,我没有检查。它没有设置为自动增量,因为它不是一个身份。但它是一个包含许多字符的 nvarchar-Id。有没有办法自己增加它,还是我需要编写一个工具来解析它?

标签: c# sql-server asp.net-mvc entity-framework


【解决方案1】:

您需要为数据库中的AspNetUsers表设置Auto Increment ON,并刷新edmx中的数据库实体。

【讨论】:

  • 不幸的是,我不能只将 Id 从 NVarchar 更改为 Int。当我尝试更新 edmx 时,由于映射了我无法选择 Int 的字段,我遇到了很多错误。
猜你喜欢
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2010-10-31
  • 1970-01-01
相关资源
最近更新 更多