Problem with Include in the Entity Framework

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 Fornecedor normally with your Endereco , Cidade and Estado . At the Edit time I can not access the data from Cidade and Estado from Endereco .

I'm 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 the error saying that Fornecedor does not have a declaration for this navigation property.

    
asked by anonymous 14.10.2014 / 05:05

1 answer

4

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

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

Do not forget to add the dependency:

using System.Data.Entity;
    
14.10.2014 / 06:03