在 MVC 中加载相关对象可能会非常混乱。
如果您真的想知道在编写实体模型类和控制器时正在做什么,您需要了解和学习很多术语。
我有很长时间的几个问题是:virtual
关键字是如何工作的,什么时候应该使用它?Include
扩展方法是如何工作的,我应该什么时候使用它?
这就是我要说的;
virtual
关键词:
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; }
}
}
以及Include
扩展方法:
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 ...
请注意,Index()
操作方法是由 Visual Studio 自动生成的。是的,Visual Studio 自动添加了.Include(b => b.Manufacturer)
. 这很不错。