9.2.1 Creando nuestra tabla roles e insertando los roles principales
Vamos a crear nuestra tabla rol, la cual sólo contendrá el campo Id y Nombre.
public class Rol
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required(ErrorMessage = "Required")]
[Column(TypeName = "VARCHAR(50)")]
public string Nombre { get; set; }
}
Los inserts los vamos a agregar en nuestra clase CaducaContext en el método OnModelCreating, agregamos al modelBuilder la propiedad Entity y le pasamos de cual tabla deseamos agregar datos, en estaecaso rol, luego en el método HasData agregamos los 3 roles que necesitamos, "Administrador", "Vendedor", "Cliente". De esta forma estos inserts se agregan a la migración si luego cambiamos el nombre de un campo se realizará un Update.
Recuerda también agregar la entidad Rol
public class CaducaContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Rol>().HasData(
new Rol { Id = 1, Nombre = "Administrador" },
new Rol { Id = 2, Nombre = "Vendedor" },
new Rol { Id = 3, Nombre = "Cliente" },
new Rol { Id = 4, Nombre = "Supervisor" }
);
}
public virtual DbSet<Rol> Rol { get; set; }
}
Creamos una nueva migración TablaRol
Comando en Windows
Add-Migration TablaRol
Comando en mac
dotnet ef migrations add TablaRol
Si revisamos el archivo de migración verás que se agrega las funciones InsertData para realizar los insert a nuestra tabla rol
public partial class TablaRol : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Rol",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy",
MySqlValueGenerationStrategy.IdentityColumn),
Nombre = table.Column<string>(type: "VARCHAR(50)",
nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Rol", x => x.Id);
});
migrationBuilder.InsertData(
table: "Rol",
columns: new[] { "Id", "Nombre" },
values: new object[] { 1, "Administrador" });
migrationBuilder.InsertData(
table: "Rol",
columns: new[] { "Id", "Nombre" },
values: new object[] { 2, "Vendedor" });
migrationBuilder.InsertData(
table: "Rol",
columns: new[] { "Id", "Nombre" },
values: new object[] { 3, "Cliente" });
migrationBuilder.InsertData(
table: "Rol",
columns: new[] { "Id", "Nombre" },
values: new object[] { 4, "Supervisor" });
}
Actualizamos la base de datos
Comando en windows
Update-database
Comando en mac
dotnet ef database update
Listo hemos creado nuestros primeros inserts con migraciones
Last updated
Was this helpful?