我为“自动生成的”webpages_Membership 表创建了一个模型,以便我可以读取 ConfirmationToken,以防用户丢失确认电子邮件以重新发送它。这是我在 AccountModels.cs 中的代码:
[Table("webpages_Membership")]
public class webpages_Membership
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public Nullable<DateTime> CreateDate { get; set; }
public string ConfirmationToken { get; set; }
public Nullable<bool> IsConfirmed { get; set; }
public Nullable<DateTime> LastPasswordFailureDate { get; set; }
public int PasswordFailuresSinceLastSuccess { get; set; }
public string Password { get; set; }
public Nullable<DateTime> PasswordChangedDate { get; set; }
public string PasswordSalt { get; set; }
public string PasswordVerificationToken { get; set; }
public Nullable<DateTime> PasswordVerificationTokenExpirationDate { get; set; }
}
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<webpages_Membership> webpages_Membership { get; set; }
}
在创建此模型之前,我可以使用以下代码行在 App_Start 上插入单个用户:
if (Membership.Provider.GetUser("admin", false) == null)
{
((SimpleMembershipProvider)Membership.Provider).CreateUserAndAccount("admin", "bidchuck");
}
然而,在实现了这个模型之后,该行现在抛出了一个异常:
[SqlException (0x80131904): Cannot insert explicit value for identity column in table 'webpages_Membership' when IDENTITY_INSERT is set to OFF.]
因此,我怀疑我的模型代码从该表中读取数据的某些内容与 WebSecurity 自动生成表的方式相冲突,这就是异常的原因。谁能解释如何更改我的模型代码,以便 WebSecurity 可以以自己的方式自动创建表?
或者,为我建议其他方式来实施“重新发送确认电子邮件”
谢谢!