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,因爲它創建了不應該存在於數據級別的依賴關係......(也許我應該爲此提出問題?) –