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; }
}
所以SaveSearchModel和TrackingItemModel是完全不同的数据库表,与用户有一个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" }
]
}
我应该使用事务并单独返回每个查询吗?这会导致我支付与独立查询相同的速度损失吗?
使用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