IDENTITY INSERT is set to OFF-Entity Framework Core

I am working on an application with ASP. net-core + entity-framework-core and with mapping and configuration via fluent-api . When I insert into the bank I get the error that IDENTITY_INSERT is set to OFF.

Follows the picture: insert the description of the image here

I have the entities (which are related):

  • Material;
  • packaging;
  • Material Group;
  • Unitmeasure;
  • record Anvisa;

Entity code

public class Material
{
    public Material()
    {
        Registros = new List<RegistroANVISA>();
    }

    public int MaterialId { get; set; }
    public string Descricao { get; set; }
    public int NumeroMaxProcessamento { get; set; }
    public string Imagem { get; set; }

    public bool Ativo { get; set; }

    [JsonIgnore]
    public int GrupoMaterialId { get; set; }
    [JsonIgnore]
    public virtual GrupoMaterial GrupoMaterial { get; set; }
    [JsonIgnore]
    public int UnidadeMedidaId { get; set; }
    [JsonIgnore]
    public virtual UnidadeMedida UnidadeMedida { get; set; }
    [JsonIgnore]
    public int EmbalagemId { get; set; }
    [JsonIgnore]
    public virtual Embalagem Embalagem { get; set; }
    [JsonIgnore]
    public virtual IEnumerable<RegistroANVISA> Registros { get; set; }
}

public class Embalagem
{
    public Embalagem()
    {
        Materiais = new List<Material>();
    }

    public int EmbalagemId { get; set; }
    public string Descricao { get; set; }
    public bool Ativo { get; set; }

    public virtual ICollection<Material> Materiais { get; set; }
}

public class GrupoMaterial
{
    public GrupoMaterial()
    {
        Materiais = new List<Material>();
    }

    public int GrupoMaterialId { get; set; }
    public string Descricao { get; set; }
    public string Observacao { get; set; }
    public bool Ativo { get; set; }

    public virtual ICollection<Material> Materiais { get; set; }
}

public class UnidadeMedida
{
    public UnidadeMedida()
    {
        Materiais = new List<Material>();
    }

    public int UnidadeMedidaId { get; set; }
    public string Descricao { get; set; }
    public string Sigla { get; set; }
    public bool Ativo { get; set; }

    public virtual ICollection<Material> Materiais { get; set; }
}

public class RegistroANVISA
{
    public RegistroANVISA()
    {

    }

    public int RegistroId { get; set; }
    public int NumeroRegistro { get; set; }
    public string Marca { get; set; }
    public bool Ativo { get; set; }

    public int MaterialId { get; set; }
    public virtual Material Material { get; set; }
}

Fluent Api configuration

public void Configure(EntityTypeBuilder<Material> builder)
{
    builder.ToTable("Metrial");

    builder.Property(m => m.Descricao)
        .HasColumnType("varchar(150)")
        .IsRequired();

    builder.HasKey(m => m.MaterialId);

    builder.Property(m => m.EmbalagemId)
        .ValueGeneratedOnAddOrUpdate();

    builder.Property(m => m.GrupoMaterialId)
        .ValueGeneratedOnAddOrUpdate();

    builder.Property(m => m.UnidadeMedidaId)
        .ValueGeneratedOnAddOrUpdate();


    //Define relacionamento um-para-muito 
    builder.HasOne(m => m.GrupoMaterial)
        .WithMany(m => m.Materiais)
       // .HasForeignKey(m=> m.GrupoMaterial.GrupoMaterialId)
        .OnDelete(DeleteBehavior.Restrict);

    //Define relacionamento um-para-muito 
    builder.HasOne(m => m.Embalagem)
        .WithMany(m => m.Materiais)
        .OnDelete(DeleteBehavior.Restrict);

    //Define relacionamento um-para-muito 
    builder.HasOne(m => m.UnidadeMedida)
        .WithMany(m => m.Materiais)
        .OnDelete(DeleteBehavior.Restrict);

    //Define relacionamento um-pra-muitos (um material com muitos registros)
    builder.HasMany(m => m.Registros)
        .WithOne(m => m.Material)
        .OnDelete(DeleteBehavior.Restrict);
}

What am I doing wrong?

Author: Diego Rafael Souza, 2018-08-16