Include Problem in Entity Framework

Asked

Viewed 804 times

1

I have the classes:

public class Estado {
    public int Id { get; set; }
    public string Nome { get; set; }
    public string Uf{ get; set; }
    public ICollection<Cidade> Cidade { get; set; }
}

public class Cidade {
     public int Id { get; set; }
     public string Nome { get; set; }
     public Estado Estado { get; set; }
     public ICollection<Endereco> Enderecos { get; set; }
}

public class Endereco {
    public int Id { get; set; }
    // Algumas Propriedades
    public Cidade Cidade { get; set; }
    public ICollection<Fornecedor> Fornecedores { get; set; }
}

public class Fornecedor {
    public int Id { get; set; }
    // Algumas Propriedades
    public virtual Endereco Endereco { get; set; }
}

I Can Save One Fornecedor usually with your Endereco, Cidade and Estado. At the time of Edit I can’t access take the data from Cidadeand of Estadoof Endereco.

I am using the following code in Controller.

public ActionResult Edit(int? id)
{
    if (id == null)
    {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }

    var fornecedor = _db.Fornecedores.Include("Endereco").FirstOrDefault(x => x.Id == id);

    if (fornecedor == null) return HttpNotFound();

    var model = new FornecedorViewModel
    {
         Fornecedor = fornecedor,
         Endereco = fornecedor.Endereco
    };
    return View(model);
}

I tried to put Include Cidade, but of the error saying that the Fornecedor does not have a statement for this navigation property.

1 answer

4


Use another form of Include to load to the last level:

var fornecedor = _db.Fornecedores
    .Include(f => f.Endereco.Cidade.Estado)
    .FirstOrDefault(x => x.Id == id);

Don’t forget to add dependency:

using System.Data.Entity;
  • 1

    Thanks, I didn’t know this type of Include. It worked 100%.

  • 1

    @Tiagosilva Boa. I will complement.

Browser other questions tagged

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