Я пытаюсь вставить некоторые значения по умолчанию в базу данных с помощью метода Seed. Насколько я вижу. Но после запуска команды update-database
новых записей не ожидается. Наверное, мне не хватает деталей. Не могли бы вы посоветовать, как я могу это исправить?EF CodeFirst Seed метод не вносит изменений в базу данных
public class JwtContext : DbContext
{
public JwtContext() : base("name=Jwt")
{
Database.SetInitializer(new JwtDbInitializer<JwtContext>());
}
public virtual DbSet<Audience> Audience { get; set; }
public virtual DbSet<Roles> Roles { get; set; }
public virtual DbSet<Users> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Roles>()
.HasMany(e => e.Users)
.WithRequired(e => e.Roles)
.HasForeignKey(e => e.RoleId)
.WillCascadeOnDelete(true);
modelBuilder.Entity<Audience>()
.HasMany(e => e.Users)
.WithRequired(e => e.Audiences)
.HasForeignKey(e => e.AudienceId)
.WillCascadeOnDelete(true);
}
private class JwtDbInitializer<T> : DropCreateDatabaseAlways<JwtContext>
{
protected override void Seed(JwtContext context)
{
base.Seed(context);
var audience = new Audience
{
ClientId = "some_client_id",
Base64Secret = "some_secret",
Name = "Agromash.Api"
};
context.Audience.Add(audience);
context.SaveChanges();
IList<Roles> defaultRole = new List<Roles>();
defaultRole.Add(new Roles { Name = "Admin" });
defaultRole.Add(new Roles { Name = "Moder" });
defaultRole.Add(new Roles { Name = "User" });
foreach (var role in defaultRole)
{
context.Roles.Add(role);
}
context.SaveChanges();
var user = new Users { Email = "email", IsActive = true, Password = "password", RoleId = 1, AudienceId = 1 };
//SiteGlobal.Email, Password = SiteGlobal.Password
context.Users.Add(user);
context.SaveChanges();
}
}
}
команда обновления-базы данных => Вы используете эф код первой миграции? –
@ DanNguyen, да, это так. –