「自動生成された」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 に 1 人のユーザーを挿入できました。
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 が独自の方法でテーブルを自動作成できるように、モデル コードを変更する方法を誰か説明できますか?
または、「確認メールの再送信」を実装する他の方法を提案してください
ありがとう!