2013-03-13 89 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(); 
}