1

グループ、アクティビティ、コメントの 3 つのエンティティがあります。各エンティティは、db でテーブルとして表されます。グループには多くのアクティビティがあり、アクティビティには多くのコメントがあります。各エンティティには CreatedDate フィールドがあります。すべてのグループ + そのグループのオブジェクト グラフで作成された最新のエンティティの CreatedDate を照会する必要があります。

必要なものを提供する SQL クエリを作成しましたが、エンティティ フレームワークでこれを行う方法がわかりません。具体的には次の行:(SELECT MAX(X) FROM (VALUES (g.CreatedDate), (a.CreatedDate), (c.CreatedDate))ご協力いただきありがとうございます。完全なクエリは次のとおりです。

WITH GroupWithLastActivityDate AS (
    SELECT DISTINCT  
        g.Id
        ,g.GroupName
        ,g.GroupDescription
        ,g.CreatedDate              
        ,g.ApartmentComplexId
        ,(SELECT MAX(X)
            FROM (VALUES (g.CreatedDate), (a.CreatedDate), (c.CreatedDate)) AS AllDates(X)) AS LastActivityDate
    FROM Groups g
    LEFT OUTER JOIN Activities a
        on g.Id = a.GroupId
    LEFT OUTER JOIN Comments c
        on a.Id = c.ActivityId  
    WHERE g.IsActive = 1
)
SELECT 
    GroupId = g.Id
    ,g.GroupName
    ,g.GroupDescription             
    ,g.ApartmentComplexId
    ,NumberOfActivities = COUNT(DISTINCT a.Id)
    ,g.CreatedDate      
    ,LastActivityDate = Max(g.LastActivityDate)     
FROM GroupWithLastActivityDate g
INNER JOIN Activities a
    on g.Id = a.GroupId
WHERE a.IsActive = 1
GROUP BY  g.Id
        ,g.GroupName
        ,g.GroupDescription
        ,g.CreatedDate
        ,g.ApartmentComplexId

今のところ、SqlQuery を使用してクエリを実行しているこのクエリ (およびその他のもの) を使用してビューを作成したことを追加する必要があります。

4

0 に答える 0