SQL -概览查询

本文关键字:查询 SQL | 更新日期: 2023-09-27 18:08:53

我在设计c# -> SQL数据访问层时遇到了一个看似简单的问题。

下面是我要做的伪代码:

User.GetOverview()

用户概览包含如下内容

public class UserOverviewModel()
{
    public string Username { get; set; }
    public SavedSearchModel[] SavedSearches { get; set; }
    public TrackingItemModel[] ItemsToTrack { get; set; }
}

所以SaveSearchModelTrackingItemModel是完全不同的数据库表,与用户有一个1 ->多个关系。

我的问题是,如何从SQL查询中获得所有这些信息?在一天结束的时候,我试图从REST Api返回这样的东西:

{
    "Username": "wakawaka54",
    "SavedSearches": [
         { "SearchText" : "40mm" }
         { "SearchText" : "50mm 12v" }
    ],
    "ItemsToTrack": [
         { "ItemID": "1374328575",
           "ItemLink" "www.somelink.com" }
         { "ItemID": "357489574",
           "ItemLink": "www.someotherlink.com" }
    ]
}

我应该使用事务并单独返回每个查询吗?这会导致我支付与独立查询相同的速度损失吗?

SQL -概览查询

使用inner join

SELECT U.UserName, S.SavedSearches, I.ItemsToTrack
FROM tblUsers U INNER JOIN tblSaveSearches S ON U.UserId = S.UserId
INNER JOIN tblItemToTrack I ON U.UserId = I.UserId

然后将返回结果集转换为UserOverviewModel列表,然后使用NewtonSoft JSON对其进行序列化

您可以使用Newtonsoft nuget