我想展示产品类别我测试了两种方法: 1。
public ActionResult Index()
{
NORTHWNDEntities _db = new NORTHWNDEntities();
IList<ProductViewModel> pList = new List<ProductViewModel>();
foreach (var p in _db.ProductSet.Include("Category"))
{
ProductViewModel p1 = new ProductViewModel(){Name = p.ProductName,Price =p.UnitPrice ?? 0,Category = p.Category.CategoryName};
pList.Add(p1);
}
return View(pList);
}
2
public ActionResult Index()
{
NORTHWNDEntities _db = new NORTHWNDEntities();
IList<ProductViewModel> pList = new List<ProductViewModel>();
foreach (var p in _db.ProductSet)
{
p.CategoryReference.Load();
ProductViewModel p1 = new ProductViewModel(){Name = p.ProductName,Price =p.UnitPrice ?? 0,Category = p.Category.CategoryName};
pList.Add(p1);
}
return View(pList);
}
我喜欢第二种方式因为我讨厌魔术弦
我想知道还有其他方法吗?
哪个更好?
答案 0 :(得分:1)
查看SQL事件探查器,您将看到第二个方法执行更多的sql语句。它适用于所有类别,因此速度较慢。
你可以这样做:
var pList = _db.ProductSet.Select(p => new ProductViewModel(){Name = p.ProductName,Price =p.UnitPrice ?? 0,Category = p.Category.CategoryName});
您的两个解决方案都会从数据库中获取许多数据。您只需要几个字段,但需要整个实体。我的解决方案只需要字段。