1
我有這樣的LINQ實體查詢,LINQ enity框架刪除unnesesary子查詢與所有列
List<CustomisedMoel> query = ( from customer in context.customers.AsNoTracking()
join buyer in context.buyers.AsNoTracking() on new { customerID = customer.ID, Status = 1 }
equals new { customerID = buyer.customerID, Status = buyer.Status }
join service in context.services.AsNoTracking() on new { serviceID = buyer.ID, Status = 1 }
equals new { serviceID = service.buyerID, Status = service.Status }
join servicestatus in context.serviceStatuses.AsNoTracking() on new { StatusID = service.StatusID }
equals new { StatusID = servicestatus.ID }
where buyer.ID.Equals(100)
select new CustomisedMoel
{
ID = customer.ID,
BuyerName = buyer.Name,
buyerNumber = buyer.Number,
serviceStatus = service.Name,
}).ToList().Dump();
上運行linqpad查詢時
,它是選擇從客戶表中的所有列的子查詢,客戶表有50列, 查詢運行速度慢,切換連接不起作用。
我正在跳得到查詢尋找類似下面的一個:
select customer.ID as ID, buyer.Name as BuyerName,buyer.Number as buyerNumber,service.Name as serviceStatus
from customers
inner join buyers on buyers.CustomberID and Status = 1
inner join services on services.buyerID = buyers.ID and Status = 1
innner join serviceStatuses on serviceStatuses.ID = services.StatusID
where buyer.ID = 100
已經嘗試過,我得到相同的輸出 –