我正在使用 EF 实现搜索功能以在网站上搜索汽车。它工作正常,但我想优化性能。汽车有品牌和型号,以及许多图像。使用 .Include() 包含品牌和型号很容易,但是我在处理图像时遇到了问题……目前,正在执行主查询,然后 EF 查询数据库以获取每个搜索结果以获取图片。我想将这一切都包含在一个查询中。我可以使用 .Include(),但这显然会加载所有图像,而我实际上只想要一个(任何)图像。有没有办法做到这一点?
多谢!
我正在使用 EF 实现搜索功能以在网站上搜索汽车。它工作正常,但我想优化性能。汽车有品牌和型号,以及许多图像。使用 .Include() 包含品牌和型号很容易,但是我在处理图像时遇到了问题……目前,正在执行主查询,然后 EF 查询数据库以获取每个搜索结果以获取图片。我想将这一切都包含在一个查询中。我可以使用 .Include(),但这显然会加载所有图像,而我实际上只想要一个(任何)图像。有没有办法做到这一点?
多谢!
您必须对图像使用单独的查询。例如:
context.Configuration.LazyLoadingEnabled = false;
var cars = context.Cars.Include(c => c.Model).Where(c => c.Type == "abc").ToList();
var images = context.Images.Where(i => i.Car.Type == "abc" && ...).ToList();
现在,如果您正确设置了所有内容,EF 应该修复汽车和图像之间的关系,并且每辆汽车都应该具有其导航属性,用于仅填充由第二个查询加载的图像的图像。