繁体   English   中英

实体框架数据库种子不播种

[英]Entity Framework database seed doesn't seed

我对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));
            }
        }
    }
}

您没有将更改保存到数据库。 请注意,Seed的默认实现不执行任何操作。

尝试在Seed中添加对SaveChanges的调用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM