Save IEnumerableT inside a parent entity with LINQ

2

Dear, 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 the table item and in the photos table. Is it possible to do this within the same _DbContext?

I tried the way below and it did not work.

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

 _DbContext.SaveChanges();

Any tips?

Thank you

    
asked by anonymous 14.01.2016 / 14:36

1 answer

2

Yes, it is possible, you first insert an entity Item and then an entity Foto , each in its corresponding DbSet within _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();
    
14.01.2016 / 14:47