21
我有一个使用Entity Framework 5.0 Code First的MVC4 Web应用程序。如何用Entity Framework和Membership表初始化数据库
在Global.asax.cs中,我有一个初始化Entity.Database的引导程序,强制初始化数据库并初始化成员资格数据库。该代码是这一个:
System.Data.Entity.Database.SetInitializer(new DatabaseContextInitializer());
Database.Initialize(true);
WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);
的DatabaseContextInitializer是当下非常简单:
public class DatabaseContextInitializer : DropCreateDatabaseIfModelChanges<DatabaseContext>
{
protected override void Seed(DatabaseContext dbContext)
{
base.Seed(dbContext);
db.Set<Workout>().Add(new Workout {Id = 1, Name = "My First workout user1"})
}
}
的问题是,我不能创建用户与成员:
WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);
因为我有一个数据库没有创建的问题。如何使用Entity Framework 5.0和Asp.Net MVC 4为数据库初始化一些默认用户?
嗨,我可以让这个解决方案一半。实际上,我已经运行了两次update-database,因为第一次创建数据库而不是表格。我有错误“无法打开数据库”WorkoutPlannerDb“请求登录。登录失败。”我想这是因为InitializeDatabaseConnection重新打开一个新的连接,而不是使用第一个连接? –
AutomaticMigrationsEnabled = true;是非常可怕的使用。无论何时您更改代码优先的DbContext,它都会自动迁移数据库,并且绝不应在生产环境中使用它。由于您没有任何迁移步骤可以追溯,因此要从数据库中的更改中恢复非常困难。相反,使用“添加迁移”为每个变更显式添加迁移步骤,以便实现代码优先DB模型。 – angularsen
@Darin:抱歉提出一个较老的问题,但如果您从Web项目中分离出EF环境,这仍然适用吗?我无法想象你会引用WebMatrix。*和System.Web.Security,因为它创建了不应该存在于数据级别的依赖关系......(也许我应该为此提出问题?) –