Как вы конвертируете подзапрос для работы с структурой сущностей? - PullRequest
0 голосов
/ 05 апреля 2020

В прошлом я создавал бы представление для этого, но знаю, что должен быть «правильный путь».

Скажем, у меня есть этот запрос:

SELECT 
    C.CustomerID
    ,C.ClientID
    ,C.Email
    ,C.PhoneNum
    ,C.PhotoCredits
    ,C.CreateDt
    ,C.Accessed
    ,C.Name
    ,C.Notes
    ,(SELECT COUNT(*) FROM PHOTOS P WHERE P.CUSTOMERID = C.CustomerID) as "COUNT"
    ,(SELECT COUNT(*) FROM PHOTOS P WHERE P.CUSTOMERID = C.CustomerID AND PURCHASEDT is not Null) as "PURCHASED" 
FROM CUSTOMERS 

В моем controller , в настоящее время у меня есть это:

public IQueryable<Customer> GetCustomers()
{
    Guid clientID = Guid.Parse(User.Identity.GetUserId());
    return db.Customers.Where(c => c.ClientID == clientID).AsQueryable();
}

Есть ли что-то, что я мог бы добавить в свою модель, чтобы включить эти подсчеты, или есть способ добавить их в контроллер, чтобы они могли быть используется на мой взгляд? Спасибо!

1 Ответ

1 голос
/ 05 апреля 2020

Что-то вроде:

var q = from c in db.Customers
        where c.ClientId = clientId
        select new 
        {
          c.CustomerID,
          c.ClientId,
          //. . . 
          Count = c.Photos.Count,
          PurchasedCount = c.Photos.Where( p => p.PurchaseDate != null )
        };
...