Asp.net mvc 4 ASP.NET MVC 4 Web安全种子
我有一些简单的DbContext:Asp.net mvc 4 ASP.NET MVC 4 Web安全种子,asp.net-mvc-4,dbcontext,Asp.net Mvc 4,Dbcontext,我有一些简单的DbContext: public class AuthContext : DbContext { public AuthContext() : base("AuthContext") { } public DbSet<User> Users { get; set; } } 我需要的是始终或在创建模型之后将数据种子植入WebSecurity。我试过: Database.SetInitializer(new AuthDbSeed
public class AuthContext : DbContext
{
public AuthContext() : base("AuthContext")
{
}
public DbSet<User> Users { 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" />
public class AuthDbSeeder : DropCreateDatabaseAlways<AuthContext>
{
protected override void Seed(AuthContext context)
{
WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
autoCreateTables: true);
WebSecurity.CreateUserAndAccount("Sergey", "1234");
在
中,我添加了:
<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>
//--------------------------------------------------------
<add name="AuthContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=ChatAuth; Integrated Security=SSPI; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
public class AuthDbSeeder : DropCreateDatabaseAlways<AuthContext>
{
protected override void Seed(AuthContext context)
{
WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
autoCreateTables: true);
WebSecurity.CreateUserAndAccount("Sergey", "1234");
公共类AuthDbSeeder:DropCreateDatabaseAlways
{
受保护的覆盖无效种子(AuthContext上下文)
{
WebSecurity.InitializeDatabaseConnection(“AuthContext”、“User”、“UserId”、“Login”,
自动创建表:true);
WebSecurity.CreateUserAndAccount(“Sergey”、“1234”);
但毕竟我有一个错误,数据库不能被删除,因为它已经在使用中。我需要一些工作方法来将数据种子植入Web安全。
对我来说,另一个非常重要的问题是:如何在同一DbContext中添加自定义模型,并将种子数据正确地添加到此上下文中
还有什么办法可以对Web安全性进行单元测试吗?我已经找到了种子问题的解决方案 我修改了SimpleMembershipInitializer:
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
try
{
WebSecurity.InitializeDatabaseConnection("AuthContext", "User", "UserId", "Login",
autoCreateTables: true);
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
}
}
}
在我的seed方法调用中
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
LazyInitializer.EnsureInitialized(ref initializer, ref isInitialized, ref initializerLock);
}
使用null作为参数
单元测试仍然是一个问题存在一个问题