У меня сложный запрос, который выбирает из множества объектов из базы данных. но я столкнулся с проблемой производительности. данные занимают много времени, пока не будут извлечены, в отличие от sql, это займет всего несколько секунд.LINQ выберите данные из многих таблиц
Таблица:
Product
productPrice (it contains more than 20k rows)
Category
Store
запрос:
var grid = from p in db.Products.ToList()
from productPrice in db.ProductPrices.ToList()
where p.ProductID == productPrice.ProductID
from c in db.Categories.ToList()
where c.CategoryID == p.ProductCategoryID
where c.CategoryID == subCategoryID
from u in db.Users.ToList()
where u.UserID == productPrice.UserID
where u.UserID == storeID
select new
{
ProductID = p.ProductID,
StoreName = u.Name,
ProductCateogry = c.CategoryName,
CategoryHsCode = c.CategoryHsCode,
ProductName = p.ProductName,
ProductBarcode = p.ProductBarcode,
Price = productPrice.Price,
PriceUnit = productPrice.Unit,
LoggedDate = productPrice.LoggedDate
};
есть какие-либо проблемы с запросом или объект кадра работой выбрать все данные, то он фильтрует его?
Удалите все «ToList», которые в основном загружают вашу базу данных полностью в память. _before_ «Where» фильтрует записи. –
'ToList' должен использоваться только в конце запроса, если вы хотите получить« Список ». –