Save Ienumerable<T> inside a parent entity with LINQ

Asked

Viewed 44 times

2

I have the following classes:

   public class Foto
   {
      [Key]
      public int Id { get; set; }

      [StringLength(500)]
      [Required(ErrorMessage = "Obrigatório")]
      public string Nome { get; set; }

      public int Item_Id { get; set; }
      [ForeignKey("Item_Id")]
      public virtual IEnumerable<Item> Item { get; set; 
   }


  public class Item
  {
     [Key]
     public int Id { get; set; }

     [StringLength(500)]
     [Required(ErrorMessage = "Obrigatório")]
     public string Nome { get; set; }
  }

I need to save in item table and table photos. It is possible to do this within the same _Dbcontext?

I tried it the way down and it didn’t work.

  _DbContext.Item.Add(new Entidade.Item
  {
     Id = item.Id,
     Nome = item.Nome,
     fotos = item.Fotos
   });

 _DbContext.SaveChanges();

Any hint?

Thank you

1 answer

2


Yes, it is possible, first you enter an entity Item and then an entity Foto, each in his DbSet corresponding within the _DbContext.

Example:

var item1 = new Item { Nome = "Item 1" });
_DbContext.Item.Add(item1);
_DbContext.SaveChanges(); // Você precisa aplicar as mudanças aqui, para que
                          // o Item.Id seja preenchido pelo EF e possa ser
                          // utilizado na inserção abaixo como chave estrangeira
                          // Note que estou considerando que Item.Id seja
                          // uma Identity Column com auto incremento e que
                          // você esteja utilizando SQL Server, para que
                          // esse conceito seja válido

var foto1 = new Foto { Nome = "Foto 1", Item_Id = item1.Id };
_DbContext.Foto.Add(foto1);
_DbContext.SaveChanges();
  • It worked!!! Thank you very much Zignd. :)

  • In addition to marking as accepted, honor the answer also with a positive vote. ;) @Thiagorodolfo

Browser other questions tagged

You are not signed in. Login or sign up in order to post.