私はいくつかの単純な DbContext を持っています:
public class AuthContext : DbContext
{
public AuthContext() : base("AuthContext")
{
}
public DbSet<User> Users { get; set; }
}
そして単純なユーザーモデル:
[Table("User")]
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string Login { get; set; }
}
私が必要とするのは、常に、またはモデルの作成後に WebSecurity にデータをシードすることです。私が試してみました:
Database.SetInitializer(new AuthDbSeeder());
//------------------------------------------------ --------
<add name="AuthContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=ChatAuth; Integrated Security=SSPI; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
そして<system.web>
私は追加しました:
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear/>
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
//------------------------------------------------ --------
public class AuthDbSeeder : DropCreateDatabaseAlways<AuthContext>
{
protected override void Seed(AuthContext context)
{
WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
autoCreateTables: true);
WebSecurity.CreateUserAndAccount("Sergey", "1234");
しかし、結局のところ、データベースは既に使用されているため削除できないというエラーが発生しました。データを WebSecurity にシードするための作業方法が必要です。また、私にとって非常に重要なのは、カスタム モデルを同じ DbContext に追加し、データをこのコンテキストに適切にシードする方法です。
また、WebSecurity を単体テストする方法はありますか?