2013-03-13 49 views
1

我對EF很新。我想在我的自定義初始值設定項中使用MVC 4覆蓋Seed方法。實體框架數據庫種子不種子

問題是當EF創建數據庫時,我沒有發現任何插入到我的Admins表中的初始記錄。這裏是我的代碼:

namespace FP.Domain.Configurations 
{ 
    public class InitializeSeed : DropCreateDatabaseIfModelChanges<EFDbContext> 
    { 
     protected override void Seed(EFDbContext context) 
     { 
      context.Admins.Add(new Admins 
      {     
       Username = "admin", 
       Password = "admin123456", 
      }); 
      base.Seed(context); 
     } 
    } 
} 

這是我的控制器:

namespace FP.WebUI.Controllers 
{ 
    public class AdminController : Controller 
    {  
     public ViewResult Login() 
     { 
      Database.SetInitializer(new InitializeSeed()); 
      return View(); 
     } 

    } 
} 

這是我的Admins實體:

namespace FP.Domain.Entities 
{ 
    public class Admins 
    { 
     public int ID { get; set; } 
     public string Username { get; set; } 
     public string HashedPassword { get; set; } 

     private string _password; 
     public string Password 
     { 
      set 
      { 
       this._password = value; 
       byte[] tempSrc = ASCIIEncoding.ASCII.GetBytes(_password);      
       HashedPassword = Convert.ToBase64String(new SHA256CryptoServiceProvider().ComputeHash(tempSrc)); 
      } 
     } 
    } 
} 

回答

3

您還沒有保存更改到數據庫。請注意,Seed的默認實現不做任何事情。

嘗試在種子中添加對SaveChanges的調用。

protected override void Seed(EFDbContext context) 
{ 
    context.Admins.Add(new Admins 
    {     
     Username = "admin", 
     Password = "admin123456", 
    }); 
    base.Seed(context); 
    context.SaveChanges(); 
} 
相關問題