palavra-chave virtual, Incluir método de extensão, carregamento lento, carregamento antecipado - como o carregamento de objetos relacionados realmente funciona
Carregar objetos relacionados no MVC pode ser bastante confuso.
Há muitos termos que você precisa conhecer e aprender se realmente quiser saber o que está fazendo ao escrever suas classes e controladores de modelo de entidade.
Algumas perguntas que eu tenho há muito tempo são: Como ovirtual
trabalho de palavra-chave e quando devo usá-lo? E como é que oInclude
trabalho de método de extensão e quando devo usá-lo?
Aqui está o que eu estou falando;
virtual
palavra chave:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace LazyLoading.Models
{
public class Brand
{
public int BrandId { get; set; }
public string Name { get; set; }
public int ManufacturerId { get; set; }
public virtual Manufacturer Manufacturer { get; set; }
}
}
E aInclude
método de extensão:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using LazyLoading.Models;
namespace LazyLoading.Controllers
{
public class LazyLoadingStoreController : Controller
{
private UsersContext db = new UsersContext();
//
// GET: /LazyLoadingStore/
public ActionResult Index()
{
var brands = db.Brands.Include(b => b.Manufacturer);
return View(brands.ToList());
}
... Other action methods ...
Observe que oIndex()
O método de ação é gerado automaticamente pelo Visual Studio. Sim, o Visual Studio adicionou automaticamente o.Include(b => b.Manufacturer)
. Isso é muito legal.