我爲「自動生成的」webpages_Membership表創建了一個模型,以便在用戶丟失確認電子郵件以便能夠重新發送時可以讀取ConfirmationToken 。這裏是我的代碼AccountModels.cs:我創造了這個模型ASP.Net MVC 4 SimpleMembership「重新發送確認電子郵件」
[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可以自己的方式自動創建表?
另外,建議等方式對我實施「重新發送確認電子郵件」
謝謝!
感謝克里斯。聽起來你知道你在說什麼。我刪除了那一行,但得到了同樣的確切異常。我的repro步驟是刪除SQL Server對象資源管理器中的數據庫並按VS中的「play」。 – Infin8Loop
或..如果您只是建議我如何從webpages_Membership表中獲取ConfirmationToken,以便我可以重新發送確認電子郵件,那將是非常好的! – Infin8Loop
不知道爲什麼你會得到相同的例外。你也可以嘗試添加一行,但使用'DatabaseGeneratedOption.None'來強制你的意志在EF上。就使用webpages_Membership而言,只需創建一個POCO來爲表格建模,告訴它使用帶有[[Table(「webpages_Membership」)]]或Fluent API的表格,然後將其添加到未跟蹤的DbContext(添加'Database。 SetInitializer(null);'在DbContext子類的構造函數中)。然後,您可以像使用EF一樣正常使用它。 –