我的数据库中碰巧存在以下关系:
cartentry - >产品 - > producttext< - culture
因此,对于每个产品,我都可以为每个支持的文化设置标题,desc等。我从存储过程切换到EF,因此我必须迁移sp以获取具有本地化名称的购物车中的所有项目。
嗯,我有感觉,这不太优雅:
public ActionResult Index(CartIndexViewModel vm)
{
vm.Cart = db.Cart
.Include(cart => cart.Product)
.ThenInclude(pt => pt.ProductText)
.ThenInclude(c => c.Culture)
.Where(t => t.Token == ContextHelper.GetToken(HttpContext))
.ToList();
foreach (Model.Cart cart in vm.Cart)
{
Model.ProductText pt = cart.Product.ProductText.First(n => n.Culture.Name == CultureInfo.CurrentCulture.Name.ToLowerInvariant());
cart.Product.Title = pt.Title;
cart.Product.Description = pt.Description;
cart.Product.Link = pt.Link;
}
return View(vm);
}
有更美妙的方式吗?特别是摆脱额外的foreach?
提前谢谢!